抢先看!安卓11新特性和适配攻略_个推技术的博客-程序员秘密

技术标签: android  移动开发  安卓11  

引言

 

 

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

 

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

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

 

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

 

正文

 

分区存储

 

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

 

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

 

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

 

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

 

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

 

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

 

 

应用包可见性

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

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

 

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

 

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

 

1.  已知想获取的包名:

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

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

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

 

 

权限变化

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

 

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

 

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

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

1. 应用 Activity 可见期间

2. 应用转为后台后的短时间内

3. 前台服务存活期间

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

 

 

位置权限

 

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

 

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

 

新功能

 增加应用退出原因功能

 

 

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

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

 

可变刷新率

 

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

 

结语

 

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

 

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

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Androilly/article/details/107920963

智能推荐

linux服务之openldap_weixin_34228387的博客-程序员秘密

http://www.openldap.org/http://blog.csdn.net/chinalinuxzend/article/details/1870656  OpenLDAP学习笔记 http://www.ttlsa.com/linux/openldap-openssh-lpk-sudo-tls-auth/  LINUX下基于LDAP集中系统用户认证系统http://...

python可视化-条形图(柱状图)与直方图_python可视化直方图_鲸落寰宇的博客-程序员秘密

本文讲述使用matplotlib画条形图和直方图,并讲述条形图和直方图的区别。

OpenCV自学笔记1:Pycharm + OpenCV3 + Python3 配置记录_两鬓已不能斑白的博客-程序员秘密

Pycharm + OpenCV3 + Python3 配置记录引言:OpenCV + Python是开发计算机视觉的利器,由于项目的需要,最近在Windows系统上配置了OpenCV + Python,同时使用Pycharm作为开发工具,现记录如下。 Step1. 下载并安装anaconda3Step2. 安装PycharmStep3. 根据自己的电脑版本下载opencv_python

1/6(rpm软件包管理、yum软件包管理)_paul__george的博客-程序员秘密

一、rpm软件包管理常见软件封包类型:rpm包文件名特征:-软件名-版本信息.操作系统.硬件架构.rpm软件包名:-firefox-52.7.0-1.el7.centos.x86_64.rpm软件名:firefoxrpm包的一般安装位置(分散):|文件类型 |默认安装位置 ||-普通执行程序-|-/usr/bin、/bin/-|| 服务器程序、管理工具 | /usr/sbin、/sbin ||配置文件| /etc、/etc/ruanjianming ||-日志文件-|-/var/l

IP核的使用之FIFO(Vivado)_vivado fifo ip核使用_通信学会了吗?的博客-程序员秘密

FIFO(First In First Out),即先进先出。FPGA 或者 ASIC 中使用到的 FIFO 一般指的是对数据的存储具有先进先出特性的一个缓存器,常被用于数据的缓存或者高速异步数据的交互。它与普通存储器的区别是没有外部读写地址线,这样使用起来相对简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

02 地铁自助售票机_地铁自助shou票机界面代码_xlinxdu的博客-程序员秘密

设计了一个地铁自助售票控制器,投币只能为1元、5元和10元;票价额为2—10元整数;具有找零功能。

随便推点

STL——SET操作与并交差_set 做差_runner668的博客-程序员秘密

一:set的集合运算推荐一篇:https://blog.csdn.net/u014023993/article/details/47614381 #include &amp;lt;iostream&amp;gt;#include &amp;lt;set&amp;gt;#include &amp;lt;algorithm&amp;gt;using namespace std;void put_in(set&amp;lt;int&amp;gt;...

用WPF窗体打造个性化界面的图片浏览器_大可山人的博客-程序员秘密

本文使用WPF窗体(XAML及C#)与Win Form控件(FolderBrowserDialog)结合的方式, 演示制作了一个简易漂亮的WPF图片浏览器。首先看看运行中的样子: XAML源码:BrawDraw.Com.FilmEffect.PhotoViewer"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat

Particle Filter Tutorial 粒子滤波:从推导到应用(三)_白巧克力亦唯心的博客-程序员秘密

五、重采样 在应用SIS 滤波的过程中,存在一个退化的问题。就是经过几次迭代以后,很多粒子的权重都变得很小,可以忽略了,只有少数粒子的权重比较大。并且粒子权值的方差随着时间增大,状态空间中的有效粒子数较少。随着无效采样粒子数目的增加,使得大量的计算浪费在对估计后验滤波概率分布几乎不起作用的粒子上,使得估计性能下降,如图所示。

Mac如何通过终端开启/关闭SSH?Mac开启和关闭SSH新手教程_扭转乾坤AI明的博客-程序员秘密

SSH(Secure Shell)是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时,SSH都会自动对其进行加密。运行 OS X 又或者是 macOS 的较新 Mac 设备都会默认预装 SSH,不过 SSH 守护进程是默认禁用的。通过终端查看 SSH 远程登录是否已经开启  想要查看 Mac 上 SSH 的当前状态?使用简单的终端就可以检查 SSH 和远程登录...

手机病毒分析_Suprman的博客-程序员秘密

手机“病毒”分析一、前言手机病毒一直被吵得沸沸扬扬,去年就有一些媒体向我约稿,要我写一些关于手机病毒方面得文章,但是我至今没见过真正的手机病毒,怕误人子弟,所以一直不敢下笔。这段时间,经常看到媒体有报道手机病毒,甚至收到很多朋友给我的提醒邮件:“当来电显示有‘ACE‘这一字段时(对于大多数有来电显示的数字手机),不要接听,立即挂断,如果接通,你的手机会感染一种病毒。该病毒会抹去你的手机和SIM卡里

有关Linux的一些问题_关于linux方面的问题_Fly_Peng的博客-程序员秘密

最近刚学习了Linux,在这里整理一些关于Linux的一些基础问题及其回答。很多答案出自百度知道与百度百科,感谢这些作者。1.Linux与Unix的关系:简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的

推荐文章

热门文章

相关标签