【问题标题】:Create directory without manage all files permission创建没有管理所有文件权限的目录
【发布时间】:2021-12-30 08:41:00
【问题描述】:

如何在没有管理所有文件权限的情况下在( /storage/emulated/0/ ) 中创建目录。 这是我的代码:

        File myFolder=new File(Environment.getExternalStorageDirectory(),"testDir");
        if(!myFolder.exists() || myFolder.isFile()){
            if(myFolder.isFile()){
                Toast.makeText(getApplicationContext(), "'testDir' exists as file", Toast.LENGTH_LONG).show();
                return;
            }
            try{
                myFolder.mkdir();
                Toast.makeText(getApplicationContext(), "Directories created successfully", Toast.LENGTH_SHORT).show();
            } catch(Exception e){
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }


        }

在 android 11 上它不起作用,因为它需要管理所有文件权限。

【问题讨论】:

  • data / 0 / emulated / 没有这样的路径。当然不是所有这些空间。取而代之的是 /storage/emulated/0 作为外部存储的根。
  • 我修复了它,我如何在没有管理所有文件权限的情况下创建文件夹
  • 你不能。在 Documents、Download、DCIM、Pictures 等公共目录之一中创建自己的文件夹。
  • 但是有一个应用程序不需要请求权限就可以管理所有文件
  • myFolder.mkdir(); 更好:if (!myFolder.exists()) if (!myFolder.mkdir()) return; try-catch 没用,因为 mkdir() 不会抛出。

标签: java android file permissions


【解决方案1】:

从 SDK 30 开始,如果不使用 MANAGE_EXTERNAL_STORAGE,您将无法访问所有文件系统。

如果您的应用属于以下类别,您可以申请此权限:

  • 文件管理
  • 备份和恢复应用程序
  • 防病毒应用程序
  • 文档管理应用程序
  • 搜索(在设备上)
  • 磁盘/文件夹加密和锁定
  • 设备迁移/电话转移

参考:https://support.google.com/googleplay/android-developer/answer/10467955?hl=en#zippy=%2Cpermitted-uses-of-the-all-files-access-permission

如果您的应用是照片、视频编辑应用或类似应用,那么您不需要此权限。您可以简单地使用 SAF 或媒体目录,如 DCIM、下载、视频等...并在那里创建您的文件夹以保存您的图像、视频等。其他方式,您可以使用 Android/媒体或数据文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2021-05-09
    • 2021-05-23
    相关资源
    最近更新 更多