1

我希望我的应用程序将文本文件写入 Documents 文件夹(或卸载应用程序后仍然存在的任何其他内存部分)。

在 Android 9 (SDK 28) 之前,可以按如下方式访问 Documents 文件夹

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);

由于新的范围内存策略,现在已弃用。官方文档说

通过迁移到 Context#getExternalFilesDir(String)、MediaStore 或 Intent#ACTION_OPEN_DOCUMENT 等替代方案,应用程序可以继续访问存储在共享/外部存储上的内容。

第一个选项,Context#getExternalFilesDir(String)不是我想要的,因为

这就像 getFilesDir() 一样,在卸载应用程序时这些文件将被删除

第三个选项Intent#ACTION_OPEN_DOCUMENT 是不够的,因为我想在访问之前写入文件。

看起来MediaStore是唯一的办法。我在 MediaStore 中看到了一些不完整的代码示例,但我找不到详尽的答案。

请问,您能否提供一个完整的 Java 片段,展示如何在 Android 10 中从卸载持久内存中写入/读取文本文件?尽管 Android 10 有严格的隐私政策,但如果用户授予权限,我不明白为什么这是不可能的。非常感谢。

4

1 回答 1

1

如果您想在永久文件夹中读/写,例如“下载”,无需用户交互。看看这里 https://stackoverflow.com/a/65314962/7037357

在这里 https://commonsware.com/blog/2020/02/15/scoped-storage-stories-undocumented-documents.html 您可以找到探索“范围存储”功能的博客集合。在链接中,您可以找到一种未记录的方式来使用相同的方法访问“文档”文件夹。

于 2020-12-15T23:11:54.593 回答