android - 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 为目标时,从此方法返回的路径不再可供应用程序直接访问
解决方案
这是解决方案:
如果在启用旧版外部存储的情况下安装应用程序,则该应用程序将保持此模式,直到被卸载。
更改标志并重新启动应用程序不起作用。
编辑:由于请求了来源。自从我第一次看到它以来,页面就发生了变化,所以引用不再是 100% 正确,但仍然:在蓝色框中
推荐阅读
- r - 闪亮的 Docker 无法连接到 API/Internet
- python - 重定向到用户个人资料详细信息不正确
- android - 在android上进行双向数据绑定的正确方法是什么?
- python - 将连接错误作为python中的参数的while循环
- jenkins - Jenkins 声明式管道记录一条在 Blue Ocean 中可见的警告消息
- json - pyspark - 读取 json 文件
- angular - 如何使用 Observable 存储状态管理以角度实现反应式编程?
- javascript - 如果对象数组中的值为假,如何返回具有布尔值的函数?
- javascript - Gulpfile 不适用于 import X from './X' statements
- security - SoftHSM V2 库文件?