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

我知道这个问题已被多次询问,但我仍然无法让它工作。 我在原始文件夹中有一个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”

对于方法1和3,我尝试过“filename”和“filename.pdf”

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

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而不占用整个活动页面?

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

这是不可能的。

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

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

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

此外,这里有示例应用程序演示:

  • PDF.js : https : //github.com/commonsguy/cw-omnibus/tree/v8.10/PDF/PdfJS
  • AndroidPdfViewer : https : //github.com/commonsguy/cw-omnibus/tree/v8.10/PDF/Pdfium