温馨提示:这篇文章已超过472天没有更新,请注意相关的内容是否还可用!
摘要:针对Android 11及以上的系统版本,我们实现了存储权限的完美适配。通过优化存储访问机制,确保应用在各种场景下的数据存储需求得到满足,同时遵循最新的系统安全规范,为用户提供流畅且安全的使用体验。
这是一个关于Android应用下载图片到本地存储的问题,在测试过程中,发现在三星Android 13的设备上,无法拉起存储权限弹窗以允许应用访问存储,经过研究,发现是由于Android系统权限管理的变化导致的。
二、原因
早期在Android应用中,我们通过在manifest文件中声明权限即可获取存储权限,但现在,随着Android系统的更新,这种方式的权限获取已经逐渐被废弃,特别是在Android 13(sdkversion为33)中,已经明确废弃了原有的存储权限获取方式,在Android 11中引入了一个新的权限:MANAGE_EXTERNAL_STORAGE,该权限允许应用读写所有共享存储内容,但也带来了一些限制,我们需要对不同的Android版本进行适配处理。
三、解决方案
申明权限
在应用的manifest文件中声明必要的权限,对于Android 11及以上版本,需要声明MANAGE_EXTERNAL_STORAGE权限;对于较低版本,需要声明WRITE_EXTERNAL_STORAGE权限。
权限判断与申请
在应用运行时,判断当前系统版本和已获得的权限情况,然后决定是否申请权限,对于Android 11及以上版本,申请MANAGE_EXTERNAL_STORAGE权限;对于较低版本,申请WRITE_EXTERNAL_STORAGE权限,考虑到用户可能会拒绝权限请求并永久关闭弹窗,这里使用了EasyPermissions库来处理权限申请和回调。
适配不同版本
由于不同版本的Android系统对存储权限的管理有所不同,因此需要根据系统版本进行适配处理,对于Android 11及以上版本,使用MANAGE_EXTERNAL_STORAGE权限;对于较低版本,使用WRITE_EXTERNAL_STORAGE权限,并在必要时引导用户到系统设置页面手动开启权限。
补充说明
由于MANAGE_EXTERNAL_STORAGE权限涉及读写所有共享存储内容,属于敏感权限,申请该权限可能不容易通过,如果只是想保存图片,可以考虑使用其他方法,如直接保存图片到特定目录,并通过媒体扫描器刷新相册显示,还可以参考其他博客中关于Android保存图片的方法和Glide库获取网络图片并转化为Bitmap的技巧。
还没有评论,来说两句吧...