Android:为什么我无法在Android 11的公共Download / myfolder目录中打开从DownloadManager下载的pdf?

问题描述

我在Android 9和Android 10中都没有遇到这个问题,因此选择了Legacy Storage。但是在Android 11中,我无法打开从下载管理器下载的文件。不过,可以从文件管理器中打开同一文件

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

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

此外,如果我将下载的文件保存到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 10 中。

这在 Android 11 中对我有用

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