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

时间:2016-06-29 19:03:58

标签: android android-studio android-6.0-marshmallow mkdirs

Android Manifest Permissions

<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();

不幸的是,两次尝试都没有创建我需要的newAppFolder文件。有人可以告诉我我做错了吗?

注意:在第二次尝试中,应用程序toast一直显示Folder Created

1 个答案:

答案 0 :(得分:0)

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

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