将 /storage/emulated/0/<my_folder> 中的文件夹从 Android 10 迁移到 11

Migrate folder in /storage/emulated/0/<my_folder> from Android 10 to 11

在我现有的应用程序中(Android 10) 我在/storage/emulated/0/<my_folder> 下有一个文件夹。在查看 Google 开发人员的各种资源后,我认为不可能再访问 Android 11 下的 /storage/emulated/0/<my_folder> 目录,因为 storage access permission 中所做的更改。

当然我可以在 Android 11 下创建这些文件夹,在 Google 提到的所谓“范围存储”中。但是,如果用户将应用程序从 10 更新到 11,当我处于 Android 11 时,我如何访问旧文件夹以将其中的文件复制到“范围存储”内的新文件夹?

或者是否有其他方法可以安全地将此文件夹迁移到 /storage/emulated/0/<my_folder> 下?

通过意图 ACTION_OPEN_DOCUMENT_TREE,您可以让用户选择您的 <myfolder>

对于新安装,请改用 /storage/emulated/0/Documents/<my_folder>

没有理由复制文件或文件夹。

您可以通过 SimpleStorage 回收旧应用程序文件夹的权限:

storageHelper.requestStorageAccess(
    expectedStorageType = StorageType.EXTERNAL,
    expectedBasePath = "<my_folder>"
)

自从引入 Scoped storage 以来,你不能在没有特殊权限的情况下在根目录下创建你的文件夹,I.E 管理外部存储,但我怀疑如果核心功能不受影响,play store 将允许访问你的应用程序, 您可以执行以下操作之一

  1. 将您需要的文件存储在相关文件夹中[推荐](文档用于文档,DCIM 用于 images/videos,音乐用于音频文件等)
  2. 需要打开文档树意图的文件夹权限(不得已)