【问题标题】:PDF.js can't show PDF from externalFilesDir at Android 11PDF.js 无法在 Android 11 上显示来自 externalFilesDir 的 PDF
【发布时间】:2021-01-21 04:14:33
【问题描述】:

我正在使用 PDF.js 在我的 Android 应用程序中显示 PDF 文件。在 Android 10 之前它运行良好,但从“targetSdkVersion 30”开始它就不再运行了。

如果我想打开并显示 PDF 文件,PDF.js 会显示

Missing PDF "file:///storage/emulated/0/Android/data/<App-ID>/files/file.pdf

路径绝对正确,我检查并使用getExternalFilesDir(null).absolutePath生成它

要加载的整个 URL 是 file:///android_asset/web/viewer.html?file=/storage/emulated/0/Android/data/<app-ID>/files/file.pdf

使用“targetSdkVersion 29”并没有改变其他任何东西,一切正常,所以似乎“targetSdkVersion 30”会以某种方式导致问题。

【问题讨论】:

  • 谁创建了那个 pdf 文件?你的应用程序?或者它是如何降落在那里的?在您的 Android 应用程序中?你使用 WebView?
  • 我用webview打开网址。我的应用程序正在下载 PDF。下载工作正常,也可以有意打开 PDF(例如使用 Adob​​e PDF 阅读器)。所以问题出在 pdf.js 本身或 webview 上。因为我只使用应用数据目录,所以存储权限应该没有问题吧?

标签: android pdf.js android-storage


【解决方案1】:

解决方案非常简单(我感到羞耻):

直到 API 29 我只用过:

webView.settings.allowFileAccessFromFileURLs = true

由于 API 30 我必须使用:

webView.settings.allowFileAccessFromFileURLs = true
webView.settings.allowFileAccess = true

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 2021-09-29
    • 2010-11-05
    • 2019-10-30
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2014-06-26
    相关资源
    最近更新 更多