前情提要:在Android 10以上文件读取受限的解决方案文章中,通过Uri等形式进行文件读写,但对使用Environment类公共目录的读写不是很友好,并且第三方需要对我们的文件读取造成一定的麻烦。
方案一:Environment实现
在AndroidManifest.xml中加入
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
在调用Environment前进行权限申请
requestPermission(Manifest.permission.MANAGE_EXTERNAL_STORAGE)
之后就可以使用Environment的相关文件功能了,但在使用以上功能前需要在AndroidManifest.xml中配置FileProvider(android api 24),才能使用Environment自带的相关路径,不然也会报错没有权限。
方案二:通过context、activity、fragment自带方法实现
getExternalCacheDir()
getExternalFilesDir(Environment.DIRECTORY_DCIM)
getExternalMediaDirs()
getExternalCacheDir():/sdcard/Android/data/你的包名/cache
getExternalFilesDir(Environment.DIRECTORY_DCIM):/sdcard/Android/data/你的包名/files/根据你Environment填入的类型
getExternalMediaDirs():/sdcard/Android/media/你的包名