安卓10外部存储的访问
今天试图读取保存在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
上一篇: 路由守卫
下一篇: Android基础学习--Service
推荐阅读
-
LG V60现身跑分:骁龙865/安卓10、保留耳机孔的HiFi旗舰
-
Win10“你的手机”终于可以同时运行多个安卓程序了:三星独享
-
安卓首款可显示电池健康度的手机!Redmi Note 10 Pro率先支持
-
华为Mate 10系列的“超福利”待遇:又给安卓手机竖立新标杆
-
替换安卓的新系统来了!华为鸿蒙官微粉丝破10万:一条微博都没发
-
安卓的java连接sqlserver数据库执行存储过程的步骤
-
软粉请愿:拿掉Surface Duo的安卓系统、换装Windows 10X
-
Xamarin 安卓 相机 各种坑 目标API Android 6以后,我选的目标API版本是 Android 10
-
安卓10外部存储的访问
-
java SpringWeb 接收安卓android传来的图片集合及其他信息入库存储