无法在模拟器上的 /storage/emulated/0 上创建目录

Can't create a directory on /storage/emulated/0 on emulator

我正在尝试在我的 android 模拟器上创建一个目录,但我做不到,我已经拥有清单 write_storage 的权限,而且我没有得到任何错误,但是 mkdir( ) return 错误,我验证外部存储是否也是可写的,它可以在物理设备上运行我的代码:

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

您必须选择:

  • compileSdkVersiontargetSdkVersion 降级到 build.gradle
  • 中的较低版本
  • Android 6需要 在运行时请求写入权限 .

我个人不建议第一个。更多信息请查看:

希望对您有所帮助!!

我有一个类似的问题已通过使用 mkdirs 而不是 mkdir 得到解决

我遇到了与 Android 10 相同的问题。我通过将 android:requestLegacyExternalStorage="true" 添加到清单中的 <application> 元素来解决它

注意:我们也可以使用context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)。环境中还有其他目录类型常量,如 DIRECTORY_MUSICDIRECTORY_MOVIES