WRITE_EXTERNAL_STORAGE no longer provides write access when targeting Android 10, unless you use requestLegacyExternalStorage。
Android 10 (Q,29) 之后不在提供 写入存储权限。所以我在SD卡中创建文件夹会一直失败。
fun getDefaultDirPath(): String {
val path = Environment.getExternalStorageDirectory().toString() + "/APictures/"
val dir = File(path)
try {
FileUtils.createOrExistsDir(dir)
} catch (e: Exception) {
e.printStackTrace()
}
return path
}
解决方法:
- 更改 targetSDK
targetSDK = 28
- Application 中添加 android:requestLegacyExternalStorage="true" targetSDK = 29 ,可以创建成功。 targetSDK = 30 , 创建失败。
android:requestLegacyExternalStorage="true"
3.如果不是必须要在 SD 卡根目录创建文件夹,可以使用 下面代码替代。
getContext().getExternalFilesDir(null) + "/APictures";
可以参考一下这个问题。