Android mkdirs()在具有写外部权限的情况下返回false
我对mkdirs函数有个问题。查看我的权限清单Android mkdirs()在具有写外部权限的情况下返回false,android,Android,我对mkdirs函数有个问题。查看我的权限清单 <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="xxxxxx" android:versionCode="15" android:versionName="3.1.1508"> <!-- Global permissions --
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="xxxxxx"
android:versionCode="15"
android:versionName="3.1.1508">
<!-- Global permissions -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SD卡已安装。我不明白。我在网上读了很多答案,但仍然是错的
我在emulator(使用模拟SD卡)上进行了测试,在Nexus5上,它不起作用。在我的HTC One X上,它工作了,为什么?!我绝望了
谢谢大家!
G.如评论中所述,答案是缺少权限 自Android 6以来,权限处理发生了变化,如下所述: 或 您需要在运行时再次收集这些权限: 引述第一个答案:
/**
* Checks if the app has permission to write to device storage
*
* If the app does not has permission then the user will be prompted to grant permissions
*
* @param activity
*/
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
可能重复的Thx!但他们的解决方案并不能解决我的问题:(我在每个目录上都测试了mkdirs(),mkdir,无论是否使用emulator。我没有更多想法:(如果您使用的是Android6,请在此处查看easyspeek的答案。权限处理已更改。我的链接丢失:
/**
* Checks if the app has permission to write to device storage
*
* If the app does not has permission then the user will be prompted to grant permissions
*
* @param activity
*/
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}