Android 11 来袭,一起来看看怎么适配(三)

简介: Android 11 来袭,一起来看看怎么适配

AsyncTask


AsyncTask在Android 11已经不建议使用,建议迁移至kotlin的协程。


此外Handler未指定Looper的构造方法也已不建议使用。

75ef9490619e8269a997d569c8d1926f_2ca9a5ea3c62e24fe5350217db247629.png


建议明确指定Looper:



private Handler handler = new Handler(Looper.myLooper());
// 或
private Handler handler = new Handler(Looper.getMainLooper());


状态栏高度


发现系统为Android 11的手机上targetSdkVersion

是30时获取状态栏高度为0,低于30获取值正常。。。因此需要使用WindowMetrics 适配一下:



public static int getStatusBarHeight(Context context) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        WindowMetrics windowMetrics = wm.getCurrentWindowMetrics();
        WindowInsets windowInsets = windowMetrics.getWindowInsets();
        Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars() | WindowInsets.Type.displayCutout());
        return insets.top;
    }       
  ....
}


WindowMetrics是Android

11新增的类,用于获取窗口边界,同样可以用来获取导航栏高度。


5.新增工具


兼容性调试工具

以往我们做适配的时候,需要先将我们项目中的 targetSdkVersion

修改为对应版本。这就导致你适配过程中有可能受到其他变更的影响,而这个新增的兼容性调试工具可以让你在不升级targetSdkVersion的情况下,针对每项变更逐个开启适配。


使用方法:


  • 开发者选项中找到应用兼容性变更选项。
  • 点击进入找到你需要调试的应用
  • 在变更列表中,找到想要开启或关闭的变更,然后点击相应的开关。

d9801a098b709c14aa7a0d6f4ab0bf04_34e2692926e407d1102c086e55e51a98.jpeg

上面第一行DEFAULT_SCOPED_STORAGE就是启用分区储存,这些常量详细的含义见:Android 11
变更列表


对于兼容性调试工具详细的使用方法见:兼容性框架工具,这里限于篇幅就不展开说了。


无线调试


Android 11的开发者选项中添加了一个无线调试的功能。类似于连接蓝牙耳机功能,可以无需USB连接线进行日常开发调试工作。(区别于以前的Android

WIFI ADB,这个是真无线,哈哈)


b26b7a7423d537babc7114e0f7b6f718_0aa5c9db2b39470134351a7639cf0b95.jpeg


使用方法:


  • 开发者选项中找到无线调试并打开。
  • 首次配对需点击“使用配对码配对设备”
  • 运行 adb pair ipaddr:port后输入配对码进行连接。


注意事项:


  • 保持电脑和手机在一个网络。
  • Platform Tools 版本需大于30.0。可使用adb --version查看。


ebdf6ac3e37c22d2c0fb53722ad83167_7256350593eef4145ba53966256ca728.png

不过我自己体验下来,感觉连接不是很稳定,不知是AS的问题还是手机问题。同时锁屏后也会断开连接,体验不是很好。。。期待后续的优化吧。


本篇内容有点多。总结一下,Android

11在权限上的变更比较多,但如果你一直遵守申请权限相关的最佳做法,那么基本上不需要额外的适配工作。


最后强调一下,对于 单次授权,权限对话框的可见性,SYSTEM_ALERT_WINDOW 权限,安装apk 这些变更只要在Android

11上就会生效,不论你是否适配Android

11。对于其他变更和API(相机、5G、瀑布屏、键盘等),因为我暂时没有遇到,也就没有列出,有需要的可以点击文末的官方文档链接查看。


截止发这篇博客时,我手机上只发现哔哩哔哩已经适配了Android 11。大多数停留在28、29,更有甚者还在26(Android 8.0

国内上架的最低适配标准)。


所以我顺便附上之前写的Android 9、10的适配攻略:

可能本篇你暂时也用不上,你可以不用,但是不能没有。点赞收藏一波不过分吧~~


参考



相关文章
|
4月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
59 2
|
6月前
|
Android开发
Android 全屏适配刘海机型
Android 全屏适配刘海机型
106 0
|
5天前
|
Android开发
Android RIL 动态切换 4G 模块适配
Android RIL 动态切换 4G 模块适配
9 0
|
13天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
25天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
22 1
|
6月前
|
安全 API 开发工具
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
357 0
|
6月前
|
存储 缓存 安全
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
269 0
|
7月前
|
安全 Shell 测试技术
Android 11 来袭,一起来看看怎么适配(二)
Android 11 来袭,一起来看看怎么适配
|
4月前
|
Java 物联网 Android开发
Android 12 蓝牙适配 Java版(下)
Android 12 蓝牙适配 Java版(下)
|
4月前
|
传感器 Java 定位技术
Android 12 蓝牙适配 Java版(上)
Android 12 蓝牙适配 Java版(上)
172 0