创建没有管理所有文件权限的目录

Create directory without manage all files permission

如何在没有管理所有文件权限的情况下在 ( /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 上它不起作用,因为它需要管理所有文件权限。

从 SDK 30 开始,您无法在不使用 MANAGE_EXTERNAL_STORAGE 的情况下访问所有文件系统。

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

  • 文件管理
  • 备份和恢复应用程序
  • 防病毒应用程序
  • 文档管理应用程序
  • 搜索(在设备上)
  • Disk/Folder 加密和锁定
  • 设备Migration/Phone传输

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

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