首页 > 解决方案 > Android:为什么我无法在 Android 11 的公共 Download/myfolder 目录中打开从 DownloadManager 下载的 pdf?

问题描述

我在 Android 9 中没有遇到这个问题,在 Android 10 中我选择了旧版存储。但在 Android 11 中,我无法打开从下载管理器下载的文件。不过,可以从文件管理器打开相同的文件。

另外,我检查了该文件的所有者,它显示的是 com.android.providers.downloads 而不是我的应用程序。

我还在 Document/myfolder 目录中创建了一个 pdf 文件,它可以使用意图轻松打开,并且我的应用程序是该文件的所有者。

此外,如果我将下载的文件保存到 Document/myfolder 目录,它仍然无法使用该意图打开。

据我了解,从 Android 11 开始,他们引入了范围存储,以及该文件的所有者是否正在访问它。它将允许通过 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限进行读/写。

对于这两个文件,我使用的是相同的 Intent。

任何人都知道如何更改我下载的文件的所有者以便我可以打开或者我无法打开下载的文件的确切原因是什么?

 Intent intent = new Intent(Intent.ACTION_VIEW);

 intent.setDataAndType(uri, PDF_TYPE);

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY);

 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

这里 PDF_TYPE 是正确的,uri 也是正确的。

DownloadManager 代码在这里也是正确的一小段

                        .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subPath.getPath());

标签: android-download-managerandroid-11scoped-storage

解决方案


我有同样的问题,但在 Android 10 中。

这适用于我在 Android 11

Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file);

推荐阅读