android 在SD 卡创建文件夹、文件失败

1,139 阅读1分钟

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
    }

解决方法:

  1. 更改 targetSDK

targetSDK = 28

  1. Application 中添加 android:requestLegacyExternalStorage="true" targetSDK = 29 ,可以创建成功。 targetSDK = 30 , 创建失败。
android:requestLegacyExternalStorage="true"

3.如果不是必须要在 SD 卡根目录创建文件夹,可以使用 下面代码替代。

getContext().getExternalFilesDir(null) + "/APictures";

可以参考一下这个问题。

requestLegacyExternalStorage is not working in Android 11 - API 30