Android 应用程序:mkdir() 在 Google Nexus 7 上失败

Android app: mkdir() fails on Google Nexus 7

我正在尝试使用 Google Nexus 7 平板电脑上的应用程序使用 mkdir() 创建一个文件夹。之后,我将在该文件夹中保存图像。

相关代码为:

    // Create the storage directory if it does not exist
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdir()) {
            Log.d(TAG, "Oops! Failed create "
                    + Config.IMAGE_DIRECTORY_NAME + " directory");
            return null;
        }
    }

并且日志显示:"Oops! Failed create userImages"。

到目前为止我尝试过的:

我的代码:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.hbksaar.bubbles">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

有人知道为什么我无法创建该文件夹吗?

如果 android 版本是 marshmallow 则权限检查是动态的。

请使用ContextCompat检查权限。

您使用的 Android OS 是哪个版本?如果你在 Android 6.0 上 运行,可能是因为你的应用没有 Storage 权限,请转到 Settings - > 应用 -> 你的应用 -> 权限 仔细检查你的应用有存储 权限。授予 存储 权限(如果尚未授予)。

尝试记录 mediaStorageDir 的完整路径以确保它是 SD 卡上的正确路径。

也尝试使用 mkdirs() 创建 non-exist 父目录。