Android Q适配攻略(五)(存储权限变更)

  • Post author:
  • Post category:其他



Android Q之提前适配攻略(一)(图标适配)


Android Q之提前适配攻略(二)(后台定位适配)


Android Q之提前适配攻略(三)(唯一标识符更改)


Android Q之提前适配攻略(四)(后台Activity启动限制)


Android Q之提前适配攻略(五)(读取权限变更)

数据隐私保护:沙盒机制

对于 Android 用户来说,这是一项非常优秀的改进。自从 Android M 以来,我已经遇到许多不给读写外存权限就无法使用的 App 了。结果是打开文件管理就能看到一堆乱七八糟的文件和文件夹,这对习惯自己整理存储空间的人来说太痛苦了。

但读写外存的权限并非必要的。通过

Context.getExternalFilesDir

可以获取到属于 App 自身的文件路径,通常是

~/Android/data/<package-name>/**/

。在该目录中读写文件均不需要申请权限,当 App 被卸载时,该文件夹及内容也会全部删除。

Android Q 中删除了

READ_EXTERNAL_STORAGE



WRITE_EXTERNAL_STORAGE

两项危险权限,限制 App 只能使用自己的应用空间存放文件。


当 App 需要保存一些不能随卸载删除的文件时,需要根据存放位置动态申请新增的权限:

READ_MEDIA_IMAGES

,

READ_MEDIA_VIDEO



READ_MEDIA_AUDIO

(分别对应系统的媒体文件夹)。 比较特殊的是 Downloads 文件夹:写入和读取自身写入的数据不需要申请权限,但想获取其他 App 存进去的文件时,必须使用系统的文件选择器,由用户选择。

以上几个路径之外的所有位置均不可访问,是不是很让人安心呢?


[模拟器测试结果]


测试安装了一个 targetSdkVersion=26 的 demo 项目,除了动态申请存储权限时的文案之外一切都没改变,应该是兼容了 targetSdkVersion 小于 Q 的 App。考虑到应用市场对 targetSdkVersion 要求(今年只要求到28),最晚要在明年 Android R 面世之前完成适配。

其他适配相关内容简报

其他的更新内容估计要等 I/O 之后上真机调试了,就简要描述一下吧

  • App 在后台使用定位需要动态申请

    ACCESS_BACKGROUND_LOCATION

    • 注意:不可单独申请,原来的定位权限依然需要
  • 提供 折叠屏/多屏显示 适配方案(生命周期调整)
  • share intent UI 预加载
  • 设置面板:可以在 App 内唤起简易设置页面(网络/音量/NFC)
  • Wifi 模式选择(high performance / low latency)



版权声明:本文为qq_37199105原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。