File.mkdirs() 不创建文件夹 - Android Marshmallow (API 23)

File.mkdirs() does not create the folders - Android Marshmallow (API 23)

Android 清单权限

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

Java 文件(第一次尝试)

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/newAppFolder";
File dir = new File(path);
dir.mkdirs();

Java 文件(第二次尝试)

String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)) {
    File dir = new File(Environment.getExternalStorageDirectory(), "newAppFolder");
    if(!dir.exists()) {
        dir.mkdirs();
        Toast.makeText(getApplicationContext(), "Folder Created", Toast.LENGTH_LONG).show();
    }
    else
        Toast.makeText(getApplicationContext(), "Folder exists", Toast.LENGTH_LONG).show();
    }

else
    Toast.makeText(getApplicationContext(), "SD Card Not Found", Toast.LENGTH_LONG).show();

不幸的是,这两种尝试都没有创建我需要的新 AppFolder 文件。有人可以告诉我我做错了什么吗?

注意:在第二次尝试时,应用程序 toast 一直显示文件夹已创建

从 Android 6.0(API 级别 23)开始,用户在应用 运行 时向应用授予权限,而不是他们安装了应用程序。

如果您的目标 sdk 是 23,您应该检查 this link 并查看在运行时请求权限是否可以修复它。