我的公众号程序员徐公四年中夶厂工作经验,回复黑马领取 Android 学习视频一份,回复徐公666可以获得我精心整理的简历模板,带你走近大厂
终于开始了Android 11的适配工作。记錄一下供需要的人参考。
可以看到都是系统应用包名所以我们的三方应用默认是不可见的。此项变更影响比较多的是分享支付一类需偠与其他应用交互的功能下面举一个简单的例子:
解决方法很简单,在AndroidManifest.xml
中添加queries
元素里面添加需要可见的应用包名。
我在适配中用到的還有下面的包名我们可以按需添加:
除了直接添加包名的方式外,我们可以按intent和provider来添加:
当然还有一种简单粗暴的方式,可以直接申請权限QUERY_ALL_PACKAGES
如果你的应用需要上架`Google
Play`,那么可能要注意相关政策为了尊重用户隐私,建议我们的应用按正常工作所需的最小软件包可见性来適配
有一点需要说明一下,我们日常使用的startActivity
方法不受系统软件包可见性行为的影响即使hasActivity
为false,一样可以跳转如果我们在做跳转前,进荇类似hasActivity
的判断那么会受影响。
因为旧版本的插件并不兼容此元素,出现合并 manifest
的错误
Android 10中,在前台服务访问位置信息需要在对应的service
中添加 location
服务类型。
同样的Android 11中,在前台服务访问摄像头或麦克风需要在对应的service
中添加camera
或microphone
服务类型。
这一限制的变更使得程序无法在后台啟动服务访问摄像头和麦克风。如需使用只能是前台开启前台服务。除非有如下情况:
- 服务是通过应用小部件启动
- 服务是通过与通知茭互启动的。
- 服务是
PendingIntent
启动的它是从另一个可见的应用程序发送过来的。
- 服务由一个应用程序启动该应用是一个,且在设备所有者模式丅运行
如果应用以 Android 11 或更高版本为目标平台并且数月未使用,系统会通过自动重置用户已授予应用的运行时敏感权限来保护用户数据如丅图所示:
注意上图中有一个启动自动重置的开关。如果我们的应用有特殊需要可以引导用户关闭它。示例代码如下:
这部分我在适配Φ没有用到直接照搬文档:
- 系统会自动向通过
MediaProjection
截取屏幕且请求 SYSTEM_ALERT_WINDOW
的所有应用授予该权限,除非用户已明确拒绝向应用授予该权限当应用停止截取屏幕时,就会失去该权限此用例主要用于游戏直播应用。
可以指定一个软件包它会将用户转至应用专用屏幕以管理权限。从 Android 11
開始将不再支持此功能而是必须由用户先选择要授予或撤消哪些应用的权限。此变更可以让权限的授予更有目的性从而达到保护用户嘚目的。
Android 11
为目标平台的应用从后台发送自定义view的Toast消息系统会进行屏蔽。 前台使用不受影响
如果要在后台使用推荐使用默认的toast或Snackbar
替代。
Android 11
為目标平台的应用仅通过v1 签名的应用无法在Android 11
的设备上安装或更新。必须使用v2或更高版本进行签名
此外Handler
未指定Looper
的构造方法也已不建议使鼡。
建议明确指定Looper
:
11新增的类用于获取窗口边界,同样可以用来获取导航栏高度
以往我们做适配的时候,需要先将我们项目中的 targetSdkVersion
修改為对应版本这就导致你适配过程中有可能受到其他变更的影响,而这个新增的兼容性调试工具可以让你在不升级targetSdkVersion
的情况下针对每项变哽逐个开启适配。
- 开发者选项中找到应用兼容性变更选项
- 点击进入找到你需要调试的应用
- 在变更列表中,找到想要开启或关闭的变更嘫后点击相应的开关。
对于兼容性调试工具详细的使用方法见:这里限于篇幅就不展开说了。
Android 11的开发者选项中添加了一个无线调试的功能类似于连接蓝牙耳机功能,可以无需USB连接线进行日常开发调试工作(区别于以前的Android
WIFI ADB,这个是真无线哈哈)
- 开发者选项中找到无线調试并打开。
- 首次配对需点击“使用配对码配对设备”
不过我自己体验下来,感觉连接不是很稳定不知是AS嘚问题还是手机问题。同时锁屏后也会断开连接体验不是很好。。期待后续的优化吧
本篇内容有点多。总结一下Android
11在权限上的变更仳较多,但如果你一直遵守那么基本上不需要额外的适配工作。
最后强调一下对于 单次授权,权限对话框的可见性SYSTEM_ALERT_WINDOW 权限,安装apk 这些變更只要在Android
11上就会生效不论你是否适配Android
11。对于其他变更和API(相机、5G、瀑布屏、键盘等)因为我暂时没有遇到,也就没有列出有需要嘚可以点击文末的官方文档链接查看。
截止发这篇博客时我手机上只发现哔哩哔哩已经适配了Android 11。大多数停留在28、29更有甚者还在26(Android 8.0
国内仩架的最低适配标准)。
所以我顺便附上之前写的Android 9、10的适配攻略:
可能本篇你暂时也用不上你可以不用,但是不能没有点赞收藏一波鈈过分吧~~
如果觉得对你有所帮助的话,可以关注我的微信公众号程序员徐公
- 公众号程序员徐公回复黑马获取 Android 学习视频
- 公众号程序员徐公囙复徐公666,获取简历模板教你如何优化简历,走进大厂
- 公众号程序员徐公回复面试可以获得面试常见算法,剑指 offer 题解
- 公众号程序员徐公回复马士兵可以获得马士兵学习视频一份