我试图在我的android模拟器上创建一个目录,但我无法做到,我已经拥有了manifest write_storage的权限,并且我没有得到任何错误,但mkdir()返回false,我验证如果外部存储也是可写的,它就可以在物理设备上运行我的代码:
/// Cria uma nova pasta para colocar o backup
File direct = new File(Environment.getExternalStorageDirectory(),
"/Financas RW Backup");
try {
if (!direct.exists()) {
if(isExternalStorageWritable()&&isExternalStorageReadable()) {
if( direct.mkdir()) {
fachada.showMessage(ExportImportDB.this," Criado");
}else{
fachada.showMessage(ExportImportDB.this," Não Criado");
}
}
}
} catch (Exception e) {
fachada.showMessage(this, e.toString());
}
答案 0 :(得分:7)
你必须选择:
compileSdkVersion
和targetSdkVersion
降级为build.gradle
我个人不建议第一个。有关详细信息,请查看:
希望这会有所帮助!!
答案 1 :(得分:2)
我在使用 Android 10 时遇到了同样的问题。我通过将 android:requestLegacyExternalStorage="true"
添加到清单中的 <application>
元素来解决此问题
注意:我们也可以使用 context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
。 Environment 中还有其他目录类型常量,例如 DIRECTORY_MUSIC
、DIRECTORY_MOVIES
等。
答案 2 :(得分:-1)
通过使用mkdirs而不是mkdir
修复了类似的问题