作用域存储 - 下载文件夹访问

3
我针对 Android 10 进行开发,并且没有使用 android:requestLegacyExternalStorage。我使用 DownloadManager 将文件下载到 download 文件夹中,代码如下: request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)。我监听下载完成的广播,提取 uri (file:///storage/emulated/0/Download/<name>.pdf),然后通过 FileProvider 在 pdf 阅读器中打开它。这种方式能够正常工作...为什么?难道不应该因为 Android 10 的 scoped storage 而无法工作吗?为什么我可以访问 download 文件夹中的文件?
编辑:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles() 列出所有的文件,尽管文档中写道:

为了提高用户隐私保护,直接访问共享/外部存储设备已被弃用。当应用程序定位到 Q 时,此方法返回的路径不再直接可供应用程序访问。


https://developer.android.com/training/data-storage/files/external-scoped。下载的文档和电子书不需要额外的权限。 - Dan Harms
当你使用SAF时,我不知道。 - Kuno
作为一个实验,请尝试下载一张图片或其他文件类型,以查看您是否仍然有访问权限。 - Dan Harms
没有区别,我仍然可以从下载文件夹中打开它。 - Kuno
请查看 https://dev59.com/2Lroa4cB1Zd3GeqPs94b#61886002 - Shahbaz Hashmi
1个回答

5
这是解决方案:

如果应用已启用传统外部存储,则该应用将保持在此模式下,直到被卸载。

更改标志并重新启动应用程序无效。 编辑:由于要求提供源代码。页面自我首次查看以来已更改,因此引用不再完全正确,但仍然在蓝色框中。 点击此处

这个的来源是什么? - mike47

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