当前位置: 移动技术网 > IT编程>开发语言>Java > 安卓10外部存储的访问

安卓10外部存储的访问

2020年07月23日  | 移动技术网IT编程  | 我要评论

今天试图读取保存在Download文件夹下的一张图片,但是BitmapFactory.decodeFile(path)返回了null,logcat给出了E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Download/1.bmp: open failed: EACCES (Permission denied)的错误。EACCES是一个内核错误,个人理解是Error Access的缩写,表示没有这个访问这个路径的权限。
在访问了官方文档后解决了问题,简单的解决办法是在manifest的application标签中添加:android:requestLegacyExternalStorage="true"就可以解决问题,通过这个设置就停用了安卓10中默认的分区存储,从而获得了外部存储的访问权限。
但是需要注意的是:明年(2021年),主要平台版本将要求所有应用都使用分区存储,无论应用的目标 SDK 级别是多少。因此,您应该提前确保您的应用能够使用分区存储。为此,请确保针对搭载 Android 10(API 级别 29)及更高版本的设备启用了该行为。但是,如果某个应用在安装时启用了传统外部存储,则该应用会保持此模式,直到卸载为止。无论设备后续是否升级为搭载 Android 10 或更高版本,或者应用后续是否更新为以 Android 10 或更高版本为目标平台,此兼容性行为均适用。
官方推荐的做法是使用存储访问框架打开文件,这里不再赘述,直接给出链接。

管理分区外部存储访问
https://developer.android.com/training/data-storage/files/external-scoped?hl=zh-cn
使用存储访问框架打开文件
https://developer.android.com/guide/topics/providers/document-provider?hl=zh-cn

本文地址:https://blog.csdn.net/mjx19951117/article/details/107451520

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网