Log.e(“AAA”, “onCreate: file.canRead false”);
}
}
针对这个问题,以下是几种妥协的解决方法:
-
如应用非必须以 29 为target, 可以将
targetSdkVersion
置为 29 以下,如targetSdkVersion = 28
,这样走动态权限就正常了。 -
仍然以
targetSdkVersion
为 29,但是可在AndroidManifest.xml中application
标签添加android:requestLegacyExternalStorage="true"
,这样也可以,但是注意compileVersion
也必须同时为 29 :
android {
compileSdkVersion 29
buildToolsVersion “29.0.3”
defaultConfig {
applicationId “com.android.test.lib”
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName “1.0”
}
…
}
这种方案暂时有效,但是官方在未来的版本中可能去掉这个设置。
- 如果你是存文件,并且只是应用内自己访问,可以将文件存在私有目录下,可以使用
getExternalFilesDir
或getExterna