繁体   English   中英

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

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

我正在尝试在我的 android 模拟器上创建一个目录,但我不能这样做,我已经拥有清单 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());
    }

你必须选择:

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

我个人不建议第一个。 欲了解更多信息,请检查:

希望这有帮助!!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM