安卓11适配攻略抢先看

作者:个推 时间:2022-05-22 22:39:05 

引言

近期,Google 发布了 Android 11的平台稳定版本。Android 11 将在确保用户隐私安全的前提下,更好地让用户畅享最新科技。

下图是 Android 11 发布整体流程的时间线:

安卓11适配攻略抢先看

个推深耕开发者领域,一直紧跟行业发展趋势,对Android 11的有关更新展开了深入研究。本文将从分区存储、应用包可见性、权限变化和新功能四个方面来谈谈 Android 11 新特性,以帮助开发者更快速、更便捷地上手适配Android新系统。

安卓11适配攻略抢先看

作者| 个推高级安卓开发工程师 一七

正文

分区存储

Android 10之前,外部存储区的内容主要以两种形式存在,一种是由应用的包名命名,归属于特定应用目录下的内容,另一种是存储在公共存储区域的内容。

在Android 10 中,Google首次引入了分区存储,将公共区域划分成了不同的集合,并且在媒体文件和其他文档之间建立了清楚的分割。经过划分之后应用不可以随意访问外部存储区中的文件,而只能访问媒体文件。如果想访问包含更多细节数据的其他文档,应用专门向用户申请有关文档的访问权限。

安卓11适配攻略抢先看

分区存储是需要以 Android 10 为目标平台的,系统默认强制执行。如果在 AndroidManifest 中添加了 requestLegacyExternalStorage=true 标志,就可以不受此限制。但是当 target API 更新为 30 后,系统会忽略该配置。

如果有数据需要迁移,可以在 AndroidManifest 中将 preserveLegacyExternalStorage 属性设为 true ,当用户升级到以 Android 11 为目标平台时,这个配置就会生效。具体而言,这个配置在用户重新安装该应用前都是有效的。

安卓11适配攻略抢先看

针对以 Android 11 为目标平台的应用 (targetSdkVersion = 30) ,WRITEEXTENRNALSTORAGE 和 WRITEMEDIASTORAGE 不再提供其他任何访问权限 。

某些应用的核心功能可能需要访问大量的文件,例如文件管理操作、备份和恢复操作等等,此时就需要申请 MANAGEEXTERNALSTORAGE 权限。我们可以通过使用 ACTIONMANAGEALLFILESACCESS_PERMISSION intent 操作将用户引导至一个系统设置页面,让用户为应用授予所有文件的管理权限。

应用包可见性

在 Android 11 之前,我们可以通过 PackageManager.getInstalledPackages(0) 获取其他所有应用的包名等信息。

安卓11适配攻略抢先看

Android 11 为了增加安全性,更好地保护用户的隐私,对应用包的可见性做出了一些改动。

当 targetSdkVersion 为 30 时,如果我们用getPackageInfo(“another.app”,0) 获取其他应用包信息时 ,会出现 NameNotFoundException 的异常。

我们可以在 AndroidMainfest 中添加 <queries>来适配特定的使用场景:(该配置相当于是添加应用白名单)

已知想获取的包名:

安卓11适配攻略抢先看

查询一组具有特定用途的应用或与其交互:

安卓11适配攻略抢先看

对于一些特殊应用,想要获取所有包名信息:


<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

权限变化

安卓11适配攻略抢先看

在 Android 11 中,系统为用户的私人数据提供了更多可供选择的授权方式,应用也加大了后台对位置的访问权限限制。

对应摄像头、位置信息和麦克风这几个数据类型,用户可以授予一次性的临时访问权限。

只要是在Android 11 上,该限制都会生效,如下图:

安卓11适配攻略抢先看

这个一次性权限的生效周期指的是:

  • 应用 Activity 可见期间

  • 应用转为后台后的短时间内

  • 前台服务存活期间

  • 当用户撤销单次授权后,应用进程退出,再次打开之后需要对应用进行重新授权期间

位置权限

在Android10 之前,我们通过ACCESSCOARRSELOCATION 或 ACCESSFINELOCATION(精确位置) 配置即可申请前后台位置权限。

Android 11将位置权限分为前台和后台两种权限。前文说的主要是前台权限,授权方式没有变化。应用想要申请后台权限,除了需要在清单文件中额外添加 ACCESSBACKGROUNDLOCATION 权限外,还需要应用主动引导用户到指定页面授权。

安卓11适配攻略抢先看

新功能

增加应用退出原因功能

安卓11适配攻略抢先看

在Android 11之前,我们想要了解应用退出的原因以及状态,都比较费劲。现 Android 11 引入了 方法:ActivityManager.getHistoricalProcessExitReasons() ,

可以让我们清楚地了解到应用退出的原因。

可变刷新率

应用和游戏现在可以为其窗口设置首选帧率。大多数 Android 设备以 60Hz 的刷新率更新屏幕,但是某些设备支持多种刷新率,例如 90Hz 和 60Hz,并可在运行时切换。在这些设备上,系统会基于首选帧率来为应用选择最佳刷新率。

安卓11适配攻略抢先看

结语

以上主要介绍了Android 11 对分区存储、应用包可见性和权限变化等模块的更新介绍。Google 在力求让用户更加便捷地使用Android系统的基础上,也希望用户数据的隐私和安全性能在最大程度上受到保护。

个推致力于为开发者提供好用的SDK。为了提升SDK的稳定性、兼容性,个推也对Android 11 的新特性进行了深入研究,并即将针对旗下产品推出全新的适配方案,以满足开发者不同的使用场景。此外,我们希望能与更多开发者交流探索Android新技术,优化用户体验,一同打造更好的安卓开发生态圈。

来源:https://segmentfault.com/a/1190000027087168

标签:android11,适配
0
投稿

猜你喜欢

  • C#编写游戏客户端的实现代码

    2021-08-28 06:24:58
  • C#中使用反射遍历一个对象属性及值的小技巧

    2021-12-10 18:15:43
  • Java中ArrayList与顺序表的概念与使用实例

    2023-01-09 03:50:30
  • c# 给pdf添加数字签名的步骤

    2022-04-05 17:58:01
  • 详解如何使用Android Studio开发Gradle插件

    2023-11-20 23:39:05
  • 用java在web环境下上传和下载文件的技巧

    2021-06-09 18:17:17
  • 利用java反射机制实现自动调用类的简单方法

    2023-11-29 15:57:22
  • 解读JDK8踩坑JCE加密限制版本问题

    2021-09-20 12:42:35
  • springboot 正确的在异步线程中使用request的示例代码

    2023-11-24 22:36:13
  • IDEA2022中部署Tomcat Web项目的流程分析

    2023-02-26 17:19:09
  • dubbo入门指南及demo实例详解

    2023-08-24 04:49:07
  • java开发ShardingSphere的路由引擎类型示例详解

    2023-11-29 01:18:56
  • Android LineChart绘制折线图的示例详解

    2022-10-15 22:43:37
  • Android自定义View实现渐变色进度条

    2022-11-25 08:27:17
  • Automapper实现自动映射的实例代码

    2023-08-14 16:37:10
  • SpringBoot结合JWT登录权限控制的实现

    2023-10-06 04:54:22
  • java中MultipartFile互转File的方法

    2022-12-14 16:52:09
  • Android 数据存储方式有哪几种

    2023-12-10 17:20:16
  • Java生成含字母和数字的6位随机字符串

    2023-04-02 02:28:58
  • C# WebApi 接口返回值不困惑:返回值类型详解

    2022-05-06 13:16:35
  • asp之家 软件编程 m.aspxhome.com