如何在WebView Android Studio中打开本地pdf文件
我知道这个问题已被多次询问,但我仍然无法让它工作。 我在原始文件夹中有一个pdf,我正在尝试使用“ https://drive.google.com/viewerng/viewer?embedded=true&url= ”在webview中打开它以在webview中打开它。
我认为我的问题是我无法获得pdf文件的正确路径。 我已经尝试了三种不同的方式,并且webview说我得到一个错误(url不存在),或者它“打开”pdf,但是webview在中间显示这个文本,“No preview available” 。
这些是我尝试获取文件路径的三种方法。
- “android.resource://com.an.example/raw/filename”
- “android.resource://”+ getPackageName()+“/”+ R.raw.filename;
- 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