访问下载文件夹中另一个应用程序的文件 - Android 10+
Posted
技术标签:
【中文标题】访问下载文件夹中另一个应用程序的文件 - Android 10+【英文标题】:Access files of another App inside the Download folder - Android 10+ 【发布时间】:2021-12-04 17:32:12 【问题描述】:试图弄清这种完全混乱的范围存储。
所以我将 App A 生成的一些文件(日志)存储在 Download 文件夹中。
我正在使用 Mediastore/ContentResolver,只要它来自 App A,读取或写入访问都没有问题。
但是应用 B 需要读取这些文件,问题就来了。 使用 Mediastore/ContentResolver 的方式相同,但这些文件似乎对查询不可见。
下载应该是共享存储,但文件确实生成为 -rw-rw--- 这意味着其他人没有权限,这可以解释为什么 App B 看不到来自 App A 的文件,如果它们不在同一组。
存储访问框架方法可以解决这个问题吗? Thi 还没有尝试过,因为弹出系统窗口绝对不是我想要的应用程序的用户体验。
谢谢。
【问题讨论】:
【参考方案1】:如果第二个应用通过 MANAGE_EXTERNAL_STORAGE 具有“所有文件访问权限”,它也可以列出第一个应用的文件。
否则,您可以让第二个应用的用户使用存储访问框架的 ACTION_OPEN_DOCUMENT 选择那些文件。
您最好将文件存储在子目录中,因为第二个应用程序可以使用 ACTION_OPEN_DOCUMENT_TREE 选择完整目录并列出所有文件。
【讨论】:
我相信 MANAGE_EXTERNAL_STORAGE 现在在提交到 playstore 时是合理的,在我的情况下我认为这应该很困难,我真的不需要访问这些文件的所有存储。所有文件都存储在下载文件夹内的子文件夹下。所以 SAF 应该是这种方式......试图避免它我认为它真的破坏了简单性和用户体验......谢谢。 如果你想在没有用户交互的情况下完成所有应用程序,甚至可以将其文件存储在 getExternalFilesDir() 或 getFilesDir() 中,并扩展 ContentProvider 以让应用程序列出两个文件并读取它们。以上是关于访问下载文件夹中另一个应用程序的文件 - Android 10+的主要内容,如果未能解决你的问题,请参考以下文章
通过 React 中另一个文件夹中的页面访问文件夹中的本地图像
如何访问 symfony2 中另一个 html.twig 文件中的 javascript 函数?