PDF.js无法在Android 11的externalFilesDir中显示PDF

8

我正在使用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吗? - blackapps
我使用webview打开URL。我的应用正在下载PDF。下载正常,还可以使用意图打开PDF(例如,使用Adobe PDF阅读器)。因此问题可能是pdf.js本身或webview。因为我只使用应用程序数据目录,所以存储权限不应该是个问题,对吧? - Tefracky
1个回答

8
这个解决方案相当简单(我真是应该感到羞愧):
在API 29之前,我只使用了:
webView.settings.allowFileAccessFromFileURLs = true

从 API 30 开始,我必须使用:

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

但是在我的页面上仍然出现了空白页。@Tefracky,您还有其他的线索吗? - gumuruh
不,我没有。我有两个应用程序,都运行良好。也许您可以提供更多的细节或代码等。 - Tefracky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接