无法在外部 public 存储中创建文件夹

Can't create folder in external public storage

我试图在外部存储图片目录中简单地创建一个子目录,但是,我总是以较低的条件结束。 (该目录不存在,mkdir 创建它失败)。

    ...
    File storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "foto_test_app");
    if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
    {
        Log.e(LOG_TAG, "External Storage not mounted.");
        return null;
    }

    if(!storageDir.exists() && !storageDir.mkdir())
    {
        Log.e(LOG_TAG, "Directory not created.");
    }
    ...

我在清单文件中确实有这样一行:

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

我在两种不同的设备上进行了测试。两者都没有安装 SDCard,但这不应该是一个问题,对吧?我错过了什么?

可能您正在使用 Android Marshmallow 或更高版本。 您需要确保您已授予 run-time 存储权限。

这可以通过在 android 设备的设置中明确设置或在 运行 时间内请求许可来完成。

您可以在下方查看link 运行 时间权限的工作原理

https://developer.android.com/training/permissions/requesting.html