通过重定向网址通过验证用户名和密码来在网络视图中使用Android视图.pdf文件

时间:2018-08-21 07:13:37

标签: android pdf sharepoint webview url-redirection

我想从共享点服务器查看pdf文件。 网址链接:https:///sites/iConnect/Lists/FeedList/Attachments/1138/Grasim%20Talent%20Hunt.pdf

it重定向到以下链接: https://login.microsoftonline.com,一旦我登录,响应就会重定向到pdf文件的网址。

在这个机构中,我如何处理和查看pdf文件到webview。

我尝试了以下代码片段:

WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(uri);

webView.setWebViewClient(new WebViewClient()
{
  @Override
  @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
 {
   if(request.getUrl().toString().endsWith(".pdf")) 
   {
     String weburl = "https://docs.google.com/gview?embedded=true&url=" + request.getUrl().toString();
     view.loadUrl(weburl);
    }
    else
    {
       view.loadUrl(request.getUrl().toString());
    }

    return true;
 }

  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
  }

  @Override
  public void onPageFinished(WebView view, String url) {
     super.onPageFinished(view, url);
     CommonUtils.dismissDialog();

  }

  @Override
  public void onReceivedError(WebView view, int errorCode,String description,String failingUrl) {
//super.onReceivedError(view, request, error);
  Toast.makeText(WebViewActivity.this,"Error"+description, Toast.LENGTH_SHORT).show();
  }


 });

请建议是否有任何概念

谢谢

Rajarajan

3 个答案:

答案 0 :(得分:0)

我使用了onPageStarted而不是shouldOverrideUrlLoading,并且没有任何问题。 我使用webView.loadUrl(uri)代替view.loadUrl(weburl)。试试吧。

答案 1 :(得分:0)

WebView无法显示pdf文件。您可以使用以下代码显示pdf

 if(url.endsWith(".pdf")){

            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.parse(url), "application/pdf");
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            startActivity(intent);
  }
  else {

       view.loadUrl(url);
  }

答案 2 :(得分:0)

如果您可以在WebView(例如ImageView)外部渲染PDF,并且定位Lollipop(5.0)及更高版本,则可以使用以下方法:

https://developer.android.com/reference/android/graphics/pdf/PdfRenderer

我今天实际上正在尝试它,对我来说效果很好。我所做的是:

  • 使用ImageView和两个按钮(一个用于后一页,一个用于前一页)创建一个片段
  • 每次用户前进或后退时,我都使用Bitmap.createBitmap(w, h, Config.ARGB_8888)创建了一个位图,其中w和h是此时ImageView的宽度/高度
  • 我请求了给定的页码并传递了新的位图,其中mBitmap位于示例代码中
  • 我将得到的位图分配了imageView.setImageBitmap(bitmap)

Voila,效果很好。我的代码是一个原型,因此我将对其进行完善,但是它可以很好地呈现数十个页面,并且速度相对较快。黑白页面有明显的延迟,但可能值1/2秒。如果我已预加载/缓存页面,则延迟可能会消失。但是,对于我的原型,没关系。

我强烈推荐这种方法!