【问题标题】:Android | Creating Folder in External Storage Root Directory on Android 11+安卓 |在 Android 11+ 上的外部存储根目录中创建文件夹
【发布时间】:2022-02-01 15:35:34
【问题描述】:

众所周知,Google 将授权概念从 Android 11 颠倒过来,彻底改变了它。

我查看了 Android 文档丛林,但没有找到关于是否仍然可以在外部存储的根目录(名为 /storage/emulated/0/)中创建文件夹的问题的答案。 如果是,怎么做?

我的应用在 android

临时解决方案可能是这样的:

 public static String getStorageDir(){

        if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath() + "/myNewFolder";
            ....

        } else {

        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myNewFolder";
        ...
    }

但这不是最理想的。如果用户从 Android 10 切换到 Android 11+,那么就会出现大问题。我需要哪些额外的代码才能在 Android 11+ 上的 ROOT 中创建文件夹?

据称 Google Play 直接拒绝“MANAGE_ALL_FILES”权限。这是真的吗?现在仍然如此吗?有人有这方面的经验吗?

【问题讨论】:

  • 为什么不在像 Documents 这样的公共目录中创建文件夹?
  • “我需要什么额外的代码才能在 Android 11+ 的 ROOT 中创建文件夹?” - 这不是大多数应用程序的选项。您唯一可行的选择是MANAGE_EXTERNAL_STORAGE,正如您所指出的,这可能会导致您的应用被 Google 拒绝。正如 blackapps 在回答中建议的那样,使用ACTION_OPEN_DOCUMENT_TREE,并让用户决定用户希望您将用户内容放在用户设备(或用户的云存储)中的哪个位置。
  • @blackapps:如上所述,这是可能的,但更适合 Android11+ 的用户。如果用户之前拥有 Android 10 并切换到 11,则会出现问题。当然,在这种情况下,用户可以将内容从旧文件夹复制到 Documents 中的新文件夹,但并不是每个人都精通技术。如果它能够继续工作而没有任何问题和用户活动,那就更优雅了。
  • 没有理由复制内容。一切都可以留在原地。只需让用户选择一次旧目录即可。

标签: java android android-permissions


【解决方案1】:

使用 ACTION_OPEN_DOCUMENT_TREE 让用户创建想要的目录。

【讨论】:

  • 这将使用户可以在任何地方创建目录,您无法控制
  • 有什么关系?
  • 应该没关系,但TS专门询问了在根文件夹中创建文件夹。
猜你喜欢
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2021-06-27
  • 2020-05-22
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
相关资源
最近更新 更多