无法在外部 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
我试图在外部存储图片目录中简单地创建一个子目录,但是,我总是以较低的条件结束。 (该目录不存在,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