Android 13运行时权限变更一览

9a33ebf16a7e27e0179780c795aeee54.jpeg

要不了多久,Android 13正式版就要发布了。

其实就在几个月前,我写了一篇关于Android 13首个开发者体验版的全面介绍,详情可以参考 Android 13 Developer Preview一览 。

那么相比于首个开发者体验版,目前Android 13已经进入了平台稳定期阶段,也就是说API基本已经固定,不会再有什么大的修改了。

于是我又重新回顾了一遍Android 13的重要新特性和行为变更,发现有一处重大变化在首个开发者体验版中几乎没有提及,那就是Android 13的运行时权限变更。

因此,今天我就再写一篇Android 13的运行时权限变更一览,带你全面了解Android 13的所有运行时权限变更。

/   细化的媒体权限   /

Google在Android 13上对本地数据访问权限做了更进一步的细化。

只能说Google为了保护用户隐私已经不遗余力了,而且今天的这步棋其实已经提前布局了很久了。

要知道,早在Android 10系统中,Google就禁用了本地文件通过绝对路径直接访问的形式,而是要通过MediaStore API来进行访问,我们称这个功能为Scoped Storage。

关于Scoped Storage,我在两年前就写过一篇文章进行介绍,详细请参考 Android 10适配要点,作用域存储 。

在这篇文章中,有这样的一处描述:

Android 10系统针对文件类型进行了分类,图片、音频、视频这三类文件将可以通过MediaStore API来进行访问,而其他类型的文件则需要使用系统的文件选择器来进行访问。

另外,我们的应用程序向媒体库贡献的图片、音频或视频,将会自动拥有其读写权限,不需要额外申请READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。而如果你要读取其他应用程序向媒体库贡献的图片、音频或视频,则必须要申请READ_EXTERNAL_STORAGE权限才行。WRITE_EXTERNAL_STORAGE权限将会在未来的Android版本中废弃。

这部分描述在Android 13之前看起来基本都是正确的。WRITE_EXTERNAL_STORAGE权限虽然还没有被废弃,但是我们无论在各种场景下几乎都已经不太可能再用到它了。

然而在Android 13当中,Google为了让用户能够更精细化地管理媒体权限,反而先对READ_EXTERNAL_STORAGE权限下手了。

从Android 13开始,如果你的应用targetSdk指定到了33或以上,那么READ_EXTERNAL_STORAGE权限就完全失去了作用,申请它将不会产生任何的效果。

与此相对应的,Google新增了READ_MEDIA_IMAGES、READ_MEDIA_VIDEO和READ_MEDIA_AUDIO这3个运行时权限,分别用于管理手机的照片、视频和音频文件。

也就是说,以前只要申请一个READ_EXTERNAL_STORAGE权限就可以了。现在不行了,得按需申请,用户从而能够更加精细地了解你的应用到底申请了哪些媒体权限。

至于申请运行时权限的代码都是同样的模板,并没有什么特别的地方。这里给大家贴出一个用Activity Result API申请的版本,PermissionX由于我还没去适配Android 13,暂时还没法跟大家演示,等适配完成后我会再写一篇文章。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值