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

Posted

技术标签:

【中文标题】如何在 WebView Android Studio 中打开本地 pdf 文件【英文标题】:How to open local pdf file in WebView Android Studio 【发布时间】:2018-08-19 22:27:36 【问题描述】:

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

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

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

    android.resource://com.an.example/raw/filename” "android.resource://" + getPackageName() + "/" + R.raw.filename; Environment.getExternalStorageDirectory() + "/filename.pdf"

对于方法 1 和 3,我尝试了 "filename" 和 "filename.pdf"

这些都不允许 pdf 在 webview 中加载。下面是我用来加载 pdf 的代码。 (注意:如果我使用 web 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 而不会占用整个活动页面?

【问题讨论】:

【参考方案1】:

我在 raw 文件夹中有一个 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 了解有关这些和其他(更差)选项的更多背景信息。

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

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

【讨论】:

以上是关于如何在 WebView Android Studio 中打开本地 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章

Android 下的 WebView 中数据如何保存

如何学习Android adb命令?

如何在 Android 的 WebView 中显示 PDF?

android webview如何获取网页输出的提示信息

如何在 Android 中将 Button 放置在 WebView 的顶部

如何在android的webview上播放音频?