如何在WebView Android Studio中打开本地pdf文件

时间:2018-03-11 23:15:22

标签: java android pdf webview

我知道这个问题已被多次询问过,但我仍然无法让它发挥作用。我在原始文件夹中有一个pdf,我正在尝试使用“https://drive.google.com/viewerng/viewer?embedded=true&url=”在webview中打开它以在webview中打开它。

我认为我的问题是我无法获得pdf文件的正确路径。我已经尝试了三种不同的方式,并且webview说我得到一个错误(url不存在),或者它“打开”pdf,但是webview在中间显示这个文本,“No preview available”

这是我尝试获取文件路径的三种方式。

  1. “android.resource://com.an.example/raw/filename”
  2. “android.resource://”+ getPackageName()+“/”+ R.raw.filename;
  3. Environment.getExternalStorageDirectory()+“/ filename.pdf”
  4. 对于方法1和3,我尝试过“filename”和“filename.pdf”

    这些都不允许在webview中加载pdf。下面是我用来加载pdf的代码。 (注意:如果我使用网址而非本地文件,此方法可以正常工作)

        webview = (WebView) findViewById(R.id.webView);
        webview.getSettings().setJavaScriptEnabled(true);
    
        webview.getSettings().setBuiltInZoomControls(true);
    
        String pdf = "one_of_the_above_methods";
        webview.loadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
    

    我做错了什么?有没有更好的方法在我的应用程序中加载本地pdf而不占用整个活动页面?

1 个答案:

答案 0 :(得分:2)

  

我在原始文件夹中有一个pdf,我正在尝试使用“https://drive.google.com/viewerng/viewer?embedded=true&url=”在webview中打开它以在webview中打开它。

这是不可能的。

  

有没有更好的方法在我的应用中加载本地pdf而不占用整个活动页面?

最好的办法就是不要在你的应用程序中加载它。通过ACTION_VIEW使用用户首选的PDF查看应用。

除此之外,你可以在Android 4.4+上使用稍微修改过的PDF.js版本。或者,use AndroidPdfViewer适用于更广泛的Android版本,但它会让您的APK更大。有关这些和其他(更糟)选项的更多背景信息,请参阅this blog post

此外,以下示例应用程序演示: