我想从共享点服务器查看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
答案 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
我今天实际上正在尝试它,对我来说效果很好。我所做的是:
Bitmap.createBitmap(w, h, Config.ARGB_8888)
创建了一个位图,其中w和h是此时ImageView的宽度/高度imageView.setImageBitmap(bitmap)
。Voila,效果很好。我的代码是一个原型,因此我将对其进行完善,但是它可以很好地呈现数十个页面,并且速度相对较快。黑白页面有明显的延迟,但可能值1/2秒。如果我已预加载/缓存页面,则延迟可能会消失。但是,对于我的原型,没关系。
我强烈推荐这种方法!