在我的 android 应用程序中,我必须将服务器中的 PDF 加载到 webview 中。根据堆栈溢出问题,我在加载时使用 Google DOC视图。但我的问题有时候它没有在 webview 中显示文件,而在另一个实例中它显示得很好。我无法弄清楚这个问题。但代码似乎没问题。我的代码段如下。
WebViewLable.getSettings().setJavaScriptEnabled(true);
WebViewLable.getSettings().setLoadWithOverviewMode(true);
WebViewLable.getSettings().setUseWideViewPort(true);
fullURL=GoogleDOCview+"https://livefarmer.com/labels/"+itemURL;
WebViewLable.loadUrl(fullURL);
}
private class Callback extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(
WebView view, String url) {
return(false);
}
}
我的网页视图如下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/app_bg_black"
android:orientation="vertical" >
<include
android:id="@+id/nav_bar"
android:layout_width="fill_parent"
layout="@layout/nav_bar" />
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webViewLable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:windowSoftInputMode="adjustResize" />
</LinearLayout>
这是没有显示pdf时的logcat输出。
这是在webview中显示pdf时的logcat输出。
所以我的代码出了什么问题。我怎样才能解决这个问题。 谢谢和问候!
答案 0 :(得分:2)
String PdfUrl = "http://pdfexample.com/abcd.pdf";
String url = "http://docs.google.com/gview?embedded=true&url=" + PdfUrl;
Log.i(TAG, "PDF URL : " + url);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
试试这个
答案 1 :(得分:0)
我设法解决上述问题的方法是,在WebView完成加载后检查内容高度,如果其值为0,则尝试重新加载url。
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (view.getContentHeight() == 0) view.loadUrl(url);
}
});