如何在根android外部存储中创建目录?

如何在根android外部存储中创建目录?,android,storage,Android,Storage,我想为通过我的应用程序保存的图像创建一个单独的目录。但我不知道我的代码有什么不足。这就是我在外部存储器的根目录中创建新目录的步骤: File root = Environment.getExternalStorageDirectory(); File directory = new File(root,"MYFOLDER"); if(!directory.exists()) { directory.mkdirs(); } 我已经在我的应用程序清单文件中添加了权限。我

我想为通过我的应用程序保存的图像创建一个单独的目录。但我不知道我的代码有什么不足。这就是我在外部存储器的根目录中创建新目录的步骤:

File root = Environment.getExternalStorageDirectory();
File directory = new File(root,"MYFOLDER");
if(!directory.exists()) {
    directory.mkdirs();
}

我已经在我的应用程序清单文件中添加了
权限。我也试过了,还有其他的,但都不管用。

我用了这个:

private static final String IMAGE_DIRECTORY = "/mydirectory";
File Directory = new File(
                Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY);

        if (!Directory.exists()) {
            Directory.mkdirs();
        }

首先通过添加以下行来授予运行时存储权限,因为在android oreo之后,您需要授予访问存储的运行时权限

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    }
然后你可以使用这个代码

File apkStorage = new File(Environment.getExternalStorageDirectory() + "/" + "TestFolder");
 if (!apkStorage.exists()) {
        apkStorage.mkdir();
        Log.e(TAG, "Directory Created.");
}

将requestLegacyExternalStorage=“true”添加到清单文件中的应用程序标记

是的,现在对于Android 10,您需要将ProvidersEven与文件提供程序一起使用,您将无法在外部存储的根目录上创建目录。只有Storage Access Framework可以做到这一点。在你叫喊成功之前,请检查mkdirs的返回值。那么,Storage Access Framework是否可以在所有android API级别上工作?或者我是否应该检查设备API级别并根据(!directory.mkdirs()){Toast(…无法创建目录…);return;}执行存储操作在Android 10上,将requestLegacyExternalStorage=“true”添加到清单文件中的应用程序标记,以使代码正常工作。同时检查mkdirs的返回值