在Android Q中,由于存储权限的变化,使用file.mkdirs()方法创建文件夹时可能会返回false。以下是一个解决方案的示例代码:
private void createDirectory() {
File directory = new File(Environment.getExternalStorageDirectory(), "MyDirectory");
if (directory.exists()) {
// 文件夹已存在
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// 在Android Q上使用MediaStore API创建文件夹
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/MyDirectory");
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
if (uri != null) {
// 文件夹创建成功
return;
}
} else {
// 在Android Q之前的版本使用file.mkdirs()方法创建文件夹
if (directory.mkdirs()) {
// 文件夹创建成功
return;
}
}
// 文件夹创建失败
}
在上面的示例代码中,首先检查文件夹是否已存在,如果存在则直接返回。然后根据Android版本的不同,选择不同的方法来创建文件夹。
在Android Q及以上版本,使用MediaStore API来创建文件夹。这里使用的是Environment.DIRECTORY_DCIM
目录,你可以根据自己的需要更改目录名。如果文件夹创建成功,方法就会直接返回。
在Android Q之前的版本,继续使用file.mkdirs()方法来创建文件夹。如果文件夹创建成功,方法也会直接返回。
如果以上两种方法都没有成功创建文件夹,就意味着文件夹创建失败。你可以根据自己的需求来处理这种情况。