将PDF加载到android webview中

时间:2014-08-27 08:54:47

标签: android pdf webview

在我的 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输出。

enter image description here

这是在webview中显示pdf时的logcat输出。

enter image description here

所以我的代码出了什么问题。我怎样才能解决这个问题。 谢谢和问候!

2 个答案:

答案 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);
            }
        });