Android new File(path).mkdirs()

2020-07-07  本文已影响0人  苏未_

Manifest已经配置权限,代码中也动态获取权限,mkdirs一直返回false,最后找到原因是path的路径使用的是Environment.getExternalStorageDirectory().getPath(),在compileSdkVersion: 29版本中,该方法标注了@Deprecated,里面已经说明,对于Android Q的手机,应用程序不再可以直接访问此方法返回的路径,所以会一直报错 open failed: ENOENT (No such file or directory)

image.png

替换path的路径方案,不使用Environment.getExternalStorageDirectory().getPath()即可

 private static String getFileRoot(Context context) {
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            File external = context.getExternalFilesDir(null);
            if (external != null) {
                return external.getAbsolutePath();
            }
        }
        return context.getFilesDir().getAbsolutePath();
    }
上一篇下一篇

猜你喜欢

热点阅读