【问题标题】:mkdirs() return false with write external permissionmkdirs() 使用外部写入权限返回 false
【发布时间】:2015-11-11 15:00:14
【问题描述】:

我的 mkdirs 函数有问题。查看我的权限清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="xxxxxx"
android:versionCode="15"
android:versionName="3.1.1508">

<!-- Global permissions -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

还有我的代码

String APP_PATH_SD_CARD = "/xxxxx";
    String fullPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + APP_PATH_SD_CARD;

    if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
        ToastDressmup.make(this, "External SD card not mounted", 0, ToastAction.CLOSE.getValue()).show();
    }

    try {
        File dir = new File(fullPath);
        if (!dir.exists()) {
            dir.mkdirs();
        }

        ==> My file doesn't exist

SD 卡已安装。我不明白。我在互联网上阅读了很多答案,但仍然是错误的。

我在模拟器(使用模拟 SD 卡)和 Nexus 5 上进行了测试,但它不起作用。在我的 HTC One X 上它可以工作,为什么?!我很绝望

谢谢大家! G.

【问题讨论】:

标签: android


【解决方案1】:

在 cmets 中已解决,答案是缺少权限。

自 Android 6 起,权限处理发生了变化,如下所述:

Exception 'open failed: EACCES (Permission denied)' on Android

Android permission doesn't work even if I have declared it

您需要在运行时再次收集这些权限:

引用第一个答案:

/**
 * Checks if the app has permission to write to device storage
 *
 * If the app does not has permission then the user will be prompted to grant permissions
 *
 * @param activity
 */
public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2015-12-22
    • 2012-08-25
    • 2021-07-02
    • 1970-01-01
    • 2018-09-22
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多