首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 9无法在Android外部公共路径内创建目录(“storage/emulated/0/MyImages”)

Android 9无法在Android外部公共路径内创建目录(“storage/emulated/0/MyImages”)
EN

Stack Overflow用户
提问于 2019-07-22 21:57:27
回答 1查看 674关注 0票数 4

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

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

我试过这样的代码。

代码语言:javascript
复制
File dir = new File(Environment.getExternalStorageDirectory() + File.separator + "MyImages");
if (!dir.exists) {
  dir.mkdirs();
}

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

dir.mkdirs()始终返回false。这里有来自LogCat的简短日志:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 22:12:12

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

在清单中添加权限

代码语言:javascript
复制
<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();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57147640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档