首页 > 解决方案 > mkdirs() 不会在 android 中创建新目录

问题描述

我试图在我的存储中创建一些文件夹并将相机中的图像存储到其中,但 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);
    }
}

标签: javaandroid

解决方案


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


推荐阅读