【问题标题】:Keep file after wipe data in Android 10在 Android 10 中擦除数据后保留文件
【发布时间】:2020-09-28 16:40:17
【问题描述】:

我目前正在开发的应用程序需要手动设置(输入一些信息)来进行设备配置。此信息需要写入一个文件,当应用程序卸载或应用程序数据被擦除时不应删除(用户支持要求,因为他们可以指导用户在某些情况下执行此操作)

有一个非常相似的旧问题,但现在已弃用答案,并且没有发布最新答案

Keep files after uninstallation of android app

所以问题是,鉴于在 Android 10 上已弃用 Environment.getExternalStorageDirectory(),我们如何以编程方式写入/读取在卸载应用程序或擦除数据时不会被删除的文件?

我们不能依赖app auto backup,,因为用户没有配置谷歌帐户。

谢谢

【问题讨论】:

  • 使用 SAF 让用户选择合适的目录。
  • 虽然有用户交互作为设备设置的一部分,但这需要以编程方式完成,如问题中所述。
  • 只需在清单中请求旧的外部存储,您就可以照常使用外部存储。
  • 这是不正确的。文档明确指出:When an app targets Build.VERSION_CODES.Q, the path returned from this method is no longer directly accessible to apps.developer.android.com/reference/android/os/…
  • 确实如此。但重复一遍:如果您在清单中请求旧版外部存储,它是。

标签: android android-file android-10.0


【解决方案1】:

在瞄准 30 时进行总结。

对于 Android 10 设备:像往常一样请求旧版外部存储以获取外部存储访问权限。

对于 Android 11 设备,Google 会退后一步:使用下载、图片、电影、文档、DCIM 等目录。所有人的读写权限。 Android 操作系统非常挑剔,为要在这些文件夹中创建的文件使用正确的扩展名。

【讨论】:

  • 您能否指出支持该声明的任何参考、文档或示例?我似乎只发现对 Android 11 的更多限制,或者不同的 API 来完成同样的事情 MediaStore。*
  • 你能先确认那些目录是可写的吗?我想你现在已经尝试过了。
  • 抱歉耽搁了,能够尝试一下并且确实可以在 Android 10 和 11 中使用。我将代码添加到答案中。奇怪的是,这无需请求旧的外部存储就可以工作。虽然我对我在 Android 10 上的测试感到怀疑,因为该设备运行了一些企业管理软件,但它完全可以在我在个人设备上测试的 android 9 和 11 上运行。
  • 进一步没有参考,因为它们只是我的经验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多