How to create folder (Android R - Api 30)?

Viewed 8503

Read that Android 11 has scoped storage, but I can't find any information, how can I create and use folder in /storage/emulated/0/ ? Old methods works only on api 29 and below :(

3 Answers

Since Android Q we can create folders in app specif storage. its path:

Android->data->package name->files->your folder

Use this:

File file;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    file = new File (this.getExternalFilesDir(null) + path);
} else {
    file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + path);
}

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

On Android 11 the restrictions in Android 10 concerning access to external storage are much less.

Environment.getExternalStorageDirectory()

is readable again and

Environment.getExternalStoragePublicDirectory(...)

is writable for folders like Environment.DIRECTORY_DOCUMENTS and so on.

The Android OS is very picky using the right extensions for your files in most of those directories.

Step 1:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Step 2:

Environment.getExternalStorageDirectory().absolutePath + "/your_folder_name"
Related