android 创建文件夹失败
下面是我遇到过的原因
1、没有申请权限,这个很简单,在manifect.xml文件中添加权限申请
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
2、android版本高于6.0。6.0以后很多手机需要动态申请权限。光在文件中配置还不行。
//动态申请权限
private void getPrimission() {
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.CAMERA", "com.zhengyuan.emcarsend"));
if (permission) {
//"有这个权限"
} else {
//"没有这个权限"
//如果android版本大于等于6.0,权限需要动态申请
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, 15);
}
}
permission = PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", "com.zhengyuan.emcarsend");
if (permission) {
//"有这个权限"
//Toast.makeText(Carout.this, "有权限", Toast.LENGTH_SHORT).show();
} else {
//"木有这个权限"
//如果android版本大于等于6.0,权限需要动态申请
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 15);
}
}
permission = PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", "com.zhengyuan.emcarsend");
if (permission) {
//"有这个权限"
//Toast.makeText(Carout.this, "有权限", Toast.LENGTH_SHORT).show();
} else {
//"木有这个权限"
//如果android版本大于等于6.0,权限需要动态申请
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 15);
}
}
}
以上示例这种有相机,存储空间的读写权限。
3、有时候即使申请了权限也创建文件夹失败,可能是一次创建多级目录,android不支持这个,可以尝试创建一个一级目录。
顺便提一下,
我是在实现拍照的时候遇到的这个问题,一直拍照失败,文件夹也创建失败。
一个原因是创建了多级目录,
另一个是7.0拍照报错,exposed beyond app through ClipData.Item.getUri()。
可以参考 https://blog.csdn.net/qq_23179075/article/details/70314473,