首页 > 解决方案 > Scoped Storage - 下载文件夹访问

问题描述

我的目标是 android 10,我不使用android:requestLegacyExternalStorage. 我使用通过以下DownloadManager方式下载到下载文件夹:request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName). 我收听下载完成广播,提取 uri ( file:///storage/emulated/0/Download/<name>.pdf) 并通过 .pdf 在 pdf 阅读器中打开它FileProvider。它有效......为什么?自android 10和范围存储以来,它不应该不起作用吗?为什么允许我访问下载文件夹中的文件?

编辑:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles()列出所有文件,尽管文档说:

为了提高用户隐私,不推荐直接访问共享/外部存储设备。当应用程序以 Q 为目标时,从此方法返回的路径不再可供应用程序直接访问

标签: androidandroid-download-managerstorage-access-frameworkandroid-10.0scoped-storage

解决方案


这是解决方案:

如果在启用旧版外部存储的情况下安装应用程序,则该应用程序将保持此模式,直到被卸载。

更改标志并重新启动应用程序不起作用。

编辑:由于请求了来源。自从我第一次看到它以来,页面就发生了变化,所以引用不再是 100% 正确,但仍然:在蓝色框中


推荐阅读