Android Q 适配指南 让你少走一堆弯路

| 设备标识符(deviceId) | 访问设备序列号或 IMEI 的应用 | 在搭载 Android Q 的设备上安装应用 |
| 无线扫描权限 | 使用 WLAN API 和 Bluetooth API 的应用 | 以 Android Q 为目标平台 |

因为从后台启动Activity权限无线扫描权限两种权限的变更影响较少。本文不作详述,如有涉及请查阅官方文档

从后台启动Activity权限变更仅针对与用户毫无交互就启动一个Activity的情况,(比如微信登陆授权)

以下会着重介绍存储权限,定位权限设备标识符三种权限的变更与适配

  • 存储权限

Android Q 在外部存储设备中为每个应用提供了一个“隔离存储沙盒”(例如 /sdcard)。任何其他应用都无法直接访问您应用的沙盒文件。由于文件是您应用的私有文件,因此您不再需要任何权限即可在外部存储设备中访问和保存自己的文件。此变更可让您更轻松地保证用户文件的隐私性,并有助于减少应用所需的权限数量。

沙盒,简单而言就是应用专属文件夹,并且访问这个文件夹无需权限。谷歌官方推荐应用在沙盒内存储文件的地址为Context.getExternalFilesDir()下的文件夹。比如要存储一张图片,则应放在Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)中。

以下将按访问的目标文件的地址介绍如何适配。

  • 访问自己文件:Q中用更精细的媒体特定权限替换并取消READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限,并且无需特定权限,应用即可访问自己沙盒中的文件。

  • 访问系统媒体文件:Q中引入了一个新定义媒体文件的共享集合,如果要访问沙盒外的媒体共享文件,比如照片,音乐,视频等,需要申请新的媒体权限:READ_MEDIA_IMAGES,READ_MEDIA_VIDEO,READ_MEDIA_AUDIO,申请方法同原来的存储权限。

  • 访问系统下载文件:对于系统下载文件夹的访问,暂时没做限制,但是,要访问其中其他应用的文件,必须允许用户使用系统的文件选择器应用来选择文件。

  • 访问其他应用沙盒文件:如果你的应用需要使用其他应用在沙盒内创建的文件,请点击使用其他应用的文件,本文不做介绍。

所以请判断当应用运行在Q平台上时,取消READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE两个权限的申请。并替换为新的媒体特定权限。

关于存储权限的(如何启用)影响范围

  • 模拟器

Android Q Beat1中,谷歌暂未开放存储权限的改动。我们需要使用adb命令

adb shell sm set-isolated-storage on

来开启模拟器对于存储权限的变更来进行适配。

  • 真机

当满足以下每个条件时,将开启兼容模式,即不开启Q设备中的存储权限改动:

应用targetSDK<=P。
应用安装在从 Android P 升级到 Android Q 的设备上。

但是当应用重新安装(更新)时,不会重新开启兼容模式,存储权限改动将生效。

所以按官方文档所说,无论targetSDK是否为Q,必须对应用进行存储权限改动的适

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值