【问题标题】:mkdirs() doesnt create new directory in androidmkdirs() 不会在 android 中创建新目录
【发布时间】:2020-02-11 08:31:11
【问题描述】:

我试图在我的存储中创建一些文件夹并将相机中的图像存储到其中,但 mkdirs 总是返回 false,已经尝试使用 mkdir 和 canWrite,但仍然相同

2020-02-12 09:32:44.043 22914-23146/example.com.absensiapp D/TET: Folder Not Exist
2020-02-12 09:32:44.047 22914-23146/example.com.absensiapp D/TET: Failed To Create Directory

这是制作文件夹并保存相机图像的代码

  String wholeFolderPath = fh.TRAINING_PATH + name;
  File dir = new File(wholeFolderPath);
  if(!dir.exists()) {
     Log.d("TET", "Folder Not Exist");
      //create new directory
      if(dir.mkdirs())
         fh.saveMatToImage(m, wholeFolderPath + "/");
      else
         Log.d("TET", "Failed To Create Directory");
   }
   else {
         Log.d("TET", "Folder Exist");
         //save the image to directory
         fh.saveMatToImage(m, wholeFolderPath + "/");
    }

已将权限放入我的清单和主要活动中

清单:

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

主要活动:

private static boolean hasPermissions(Context context, String... permissions) {
    if (context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

private void checkPermission() {
    int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA
    };

    if (!hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }
}

【问题讨论】:

  • 我没有看到任何mkdir() 方法,而是有canWrite()
  • @SkypeDogg 抱歉,忘记编辑了。尝试使用 canWrite(),但仍然返回 false
  • mkdirs() 创建包含所有父目录的完整路径。如果你只想创建这个目录,试试mkdir()
  • 目录是否已经存在?
  • 如果文件夹还不存在,您应该只调用 mkdir 或 mkdirs。如果文件夹已经存在 mkdir 并且 mkdirs 将返回 false。此外,您仅在一次检查返回值。

标签: java android


【解决方案1】:

解决问题。将 build.gradle 中的 targetSdkVersion 从 29 降级到 21

【讨论】:

  • 这不是解决方案。那是投降。
猜你喜欢
  • 2017-04-20
  • 2014-04-06
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 2015-04-06
  • 2015-02-24
  • 1970-01-01
  • 2021-10-29
相关资源
最近更新 更多