一个bug引发的Android分区存储的思考

**问题:**
在安卓手机上实现保存图片的功能,部分手机保存失败。报了如图一的错误:

 


根据报错信息是没有权限,但仔细在代码内检查是有申请到存储权限的,并且该功能在其他手机上没问题

**实现流程:**
仔细看我们的实现流程如图二所示:

 


整个过程看上去都没问题。
但是在出现问题的手机上,使用device explorer确实访问访问不了storage/emulated/0/Pictures这个路径。在功能正常的手机,是可以访问这个路径的。
图三:功能异常的手机sd卡目录

 


图四:功能正常的手机sd卡目录

 

**解决**:
原因是在Android10上,分区存储的限制。
* 1.目前应用直接采用的是Android10以下的存储方式,申请存储权限后将文件写入公共目录。但是在Android10上面,会推荐你将文件写入当前应用的外部私有存储,而不是直接通过自己写文件的方式去写入外部公共目录。
* 2.或者将当前应用禁止分区存储 ,将android:requestLegacyExternalStorage="true" 加入manifest
* 3.将应用的tagrget sdk 降到28及以下

 

posted @ 2024-04-11 18:22  乔瑟琳  阅读(5)  评论(0编辑  收藏  举报