java - Android 9 无法在 Android 外部公共(public)路径 ("storage/emulated/0/MyImages"中创建目录)

标签 java android android-9.0-pie

我想在 Android 外部公共(public)路径 ("storage/emulated/0/MyImages") 中创建一个目录。

代码在 Android 9 上运行。授予所有写入外部存储的运行时权限。

试过这样的代码。

File dir = new File(Environment.getExternalStorageDirectory() + File.separator + "MyImages");
if (!dir.exists) {
  dir.mkdirs();
}

dir 变量具有路径 - "/storage/emulated/0/MyImages"

dir.mkdirs() 总是返回 false。有来自 LogCat 的简短日志:

W/System.err: java.io.IOException: No such file or directory
W/System.err: at java.io.UnixFileSystem.createFileExclusively0(Native Method)
W/System.err: at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)
W/System.err: at java.io.File.createNewFile(File.java:1008)

最佳答案

首先,检查权限,如果是,然后调用您的函数,否则调用 showPhoneStatePermission

在 list 中添加权限

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

private void showPhoneStatePermission() {
    int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            showExplanation("Permission Needed", "Rationale", Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE);
        } else {
            requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE);
        }
    } else {
        Toast.makeText(MainActivity.this, "Permission (already) Granted!", Toast.LENGTH_SHORT).show();
    }
}

关于java - Android 9 无法在 Android 外部公共(public)路径 ("storage/emulated/0/MyImages"中创建目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57147640/

相关文章:

java - 预期的 Android Studio 类或接口(interface)

java - .java 使用或覆盖已弃用的 API。注意 : Recompile with -Xlint:deprecation for details

安卓 9.0 : Not allowed to start service: app is in background. 。在 onResume() 之后

安卓运营商app e-sim激活码使用

应用程序后台模式下的 Android BLE 扫描,广告数据包未检测到信标正在检测

java - Tomcat启动时的触发函数

Graal 编译的 JavaFX 应用程序中的 java.lang.ClassNotFoundException

java - Android Volley 无法返回字符串

java - 将 Excel 文档转换为二维数组

java - 设备中的应用名称