作者:恋猫de小郭
❝
「是的,你没看错,现在就要带你适配 Android13」。
❞
2022 的Google I/O 发布了 Android 13 beta 2 和 Android 13 Beta 1 国内厂商的设备支持列表,虽然按照惯例, Android 13 应该是年末才发布正式版,但是相信有的开发者已经收到了平台的 Android13 的适配要求,所以本篇也是结合 Oppo 的 Android 13 应用兼容性适配指导 和官方提供的一些文档内容做一个整理测试。
目前 Android 13 主要的兼容问题还是在于隐私权限上,所以本次的适配指南相关内容也是着重在这一部分, 「这里涉及面比较广的应该就是相册和通知权限」。
相册权限
这个动图大家可能看到过,「这是 Android 13 上提供的系统图片选择器,通过 Intent(MediaStore.ACTION_PICK_IMAGES); 就可以打开,支持视频、音频、图片分类,支持多选和单选」 ,另外官方也表示过,这个特性不仅仅会在 Android 13 中出现,谷歌还会将其放置到 Play 商店中,向 Android 11 和 Android 12 设备推送。
我们通过调整 TargetSDK 设置为 PreView,然后运行到 Tiramisu 的模拟器上进行测试,主要测试 TargetSDK 在低于 “Tiramisu” 和等于 “Tiramisu” 时的不同情况。
如下图所示:
- 图 1 是 「TargetSDK 低于 13 时运行在 Andorid 13 模拟器上的情况,此时可以正常访问到本地图库相关信息」;
- 图 2 是使用了 “Tiramisu” 下,「通过官方提供的 Intent(MediaStore.ACTION_PICK_IMAGES); 打开的系统相册选择组件」,也没问题
- 图 3 和 图 4 是使用了 “Tiramisu”,使用以前代码运行后的相册读取情况,没做处理,可以看到此时读取不到相关信息;
- 图 5 是 「通过申请新的android.permission.READ_MEDIA_IMAGES 权限,就可以用以前的代码继续访问到以前的相册信息」,因为对于目标版本为 Android 13 的情况,现在 READ_EXTERNAL_STORAGE权限被细化了,开发者需要使用READ_MEDIA_IMAGE、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO 来替代适配;
- 图 6 在申请完权限之后,就可以正常读取相册等信息;
总结: 「所以如果是 TargetSDK 在 Android 13 以下,不需要处理,如果在 Android 13 以及以上 ,需要增加申请权限」。
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />