在Android 11上写入许多文件

问题描述

场景

我正在尝试创建许多文件,作为用户的功能。例如,我可能写了一个应用程序,该应用程序为过去几周内他们收听的每首歌都创建了一个文件(例如带有歌词的文本文件)。我无法让用户为我生成的每个文件选择目录和文件名,这将花费几个小时。用户应该可以从其他应用程序访问这些文档。

解决方案(不是真的)

在Android 11中,似乎Storage Access Framework没用。我注意到最初有2种有趣的选择:

  1. 创建新文件(创建与用户互动的启动活动,仅保存一个文件),here
  2. 授予访问目录内容的权限(允许进行读取访问,但无权编写任何文档),如here所述。
  3. 注意:如果您将Android 10作为目标并请求WRITE_EXTERNAL_STORAGE,则已经存在解决方案。不幸的是,此权限在Android 11上被拒绝。因此,我无法使用发布于here的解决方案。
  4. 使用Storage Access Framework(特别是ACTION_OPEN_DOCUMENT_TREE)来访问目录,以访问目录,但是我无法将文件写入该目录。 (我得到FileNotFoundException,因为这不是普通路径,而是树路径。)

判决

我猜想我需要遵循“管理存储设备上的所有文件”的路线,如here所述,其中涉及使用ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION启动额外的活动。我宁可不要请求读取 entire 驱动器的权限,也不要让用户进入设置应用程序以授予权限。写入文件不需要任何权限...

您将如何为用户保存许多(非媒体)文件?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)