1

我们有一个应用程序,允许用户下载文件并将其存储在本地。为了提供对文件的更大访问权限(例如,手动备份),文件被下载到下载目录中的应用程序特定文件夹中。

直到 Android Q,应用程序可以简单地使用 File API 来检查文件是否在本地存在并相应地更新 UI。但是,从那时起,我们已经转向使用 Mediastore API。但是,用户面临的问题之一是重新安装后无法访问下载的文件。重新安装后,该应用程序无法知道以前的安装是否有剩余文件。它永远无法正确管理文件夹。

范围存储文档说,SAF 是让应用程序完全访问文件夹读取和写入权限的方法。还有其他方法吗?如果我们要使用 SAF,我们需要如何在用户每次打开应用时请求权限?有没有办法持久化file返回的模式 URI?这个用例的文档很少(或者我们没有找到)。

谢谢。

4

2 回答 2

1

您可以尝试使用共享存储。它用于共享其他应用程序可以或应该可以访问并保存的用户数据,即使用户卸载您的应用程序也是如此。

要使用它,您需要MANAGE_EXTERNAL_STORAGE. 但是当您将应用程序提交到 Google Play 时,会有一些限制,请在此处阅读。
由于 COVID-19 问题,需要 MANAGE_EXTERNAL_STORAGE 权限的应用无法上传到 Google Play。所以现在,您可以将 SDK 版本定位为 29,并使用requestLegacyExternalStorageflag。2021 年初之后,您可以尝试使用共享存储。

于 2020-10-03T12:23:23.577 回答
0

对于 Android 10 设备,请求清单文件中的旧版外部存储,并且您像往常一样拥有对下载文件夹的文件访问权限。

对于 Android 11 设备,下载文件夹以旧方式可读,甚至可写。无需媒体商店。

于 2020-10-03T12:02:33.300 回答