【问题标题】:Can't create a directory on /storage/emulated/0 on emulator无法在模拟器上的 /storage/emulated/0 上创建目录
【发布时间】:2016-07-05 05:48:19
【问题描述】:

我正在尝试在我的 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());
    }

【问题讨论】:

  • 使用 mkdirs();如果不存在,它将创建父文件夹;但 mkdir 不会创建,因此它会返回 false
  • 我也试了,不行
  • 好吧,这样做; Environment.getExternalStorageDirectory().getAbsolutePath(), +"你的自定义";
  • 把你的异常日志放在这里。
  • 您在 Android 6 上运行吗?

标签: android android-emulator android-external-storage


【解决方案1】:

你必须选择:

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

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

希望这会有所帮助!

【讨论】:

  • 问题是android的版本,我用低版本试了下也可以!
  • 请求权限有效;我们应该在控制台中收到关于此的警告。
  • Android Studio 3.1 仍然没有警告。
【解决方案2】:

我在使用 Android 10 时遇到了同样的问题。我通过在清单中的 <application> 元素中添加 android:requestLegacyExternalStorage="true" 解决了这个问题

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

【讨论】:

    【解决方案3】:

    使用 mkdirs 代替 mkdir 解决了类似的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-08
      • 2021-09-04
      • 2021-06-07
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      相关资源
      最近更新 更多