我们有一个应用程序,除其他功能外,它允许用户下载文件并将其存储在本地。为了提供对文件的更大访问权限(例如,手动备份),将文件下载到“下载”目录中特定于应用程序的文件夹中。
直到Android Q,应用程序都可以简单地使用File API来检查文件是否在本地,并相应地更新UI。但是,从那时起,我们开始转向使用Mediastore API。但是,用户面临的问题之一是重新安装后无法访问下载的文件。重新安装后,该应用程序无法知道以前的安装是否剩余了文件。它永远无法正确管理该文件夹。
作用域内的存储文档说,使用SAF可以为应用提供完全访问文件夹的权限。还有另一种方法吗?如果要使用SAF,那么每次用户打开应用程序时,我们如何需要请求许可?有什么方法可以保留返回的file
模式URI?有关该用例的文档很少(无论是那个文档还是我们都找不到)。
谢谢。
答案 0 :(得分:0)
对于Android 10设备,清单文件中请求旧版外部存储,并且您可以照常对“下载”文件夹具有文件访问权限。
对于Android 11设备,“下载”文件夹以旧的方式可读,甚至可以写入。无需媒体存储。
答案 1 :(得分:0)
您可以尝试使用the shared storage。它用于共享用户数据,即使其他用户卸载了您的应用程序,该数据也可以被其他应用程序访问或保存。
要使用它,必须先获得MANAGE_EXTERNAL_STORAGE
的许可。但是,当您将应用程序提交到Google Play时,这里有一些限制,请阅读here。
由于COVID-19问题,无法将需要MANAGE_EXTERNAL_STORAGE权限的应用上载到Google Play。因此,现在,您可以将SDK版本定位为29,并使用requestLegacyExternalStorage
标志。 2021年初之后,您可以尝试使用共享存储。