android新版本适配

您所在的位置:网站首页 小米安卓11适配计划 android新版本适配

android新版本适配

2024-07-15 15:44| 来源: 网络整理| 查看: 265

前言:

 适配Android13事不容缓

2022年9月14-2022年9月15日,Google中国开发者大会在上海举办,大会上,演讲嘉宾大约抽出了半个小时时间讲解android13的新特性。这也意味着,Android离我们越来越近了。

目前,小米,VIVO等中国厂商的主流手机已经支持Android了,我估计,大约年底应该就会有Android13的系统逐渐推送到用户手机上,所以,适配Android13已经变的非常紧迫了。

官方文档:

本身主要是参考谷歌官方文档来写的,是对官方文章的一个实践和细化,官方文档链接如下:

https://developer.android.com/about/versions/13/features#themed-app-icons

我们把Android13的变化主要分为两部分,第一部分,原来就有的,在第二篇章讲解。另外一部分是新增的,有可能用得到的,放在第三章中去讲解。

所以,本文主要分为三大块讲解:

1.真机如何升级到Android13;

2.Android13有哪些功能的变化以及对应的适配方案;

3.Android13有哪些新的功能以及如何使用。

一.真机如何升级Android13

真机我们主要分为两类,谷歌pixel和其它品牌手机。

1.1其它品牌

其它品牌手机,主要是通过注册开发者版本进行升级的,因为不同品牌的手机升级方式不一样,这里就不具体讲解了。

目前支持的品牌列表如下:

华硕联想诺基亚一加OPPO真我夏普TECNOVivo小米中兴

1.2 Pixel升级

本文主要以Pixel升级Android13为例。

谷歌升级主页链接如下:https://developer.android.com/about/versions/13/get

主要分为两种升级方式:

1.注册Pixel的Android13 Beta版计划

2.刷写或手动安装系统映像

注册Pixel的Android13 Beta版计划

首先第一种方式,需要登陆Google账号,然后在官方网页点击注册“注册适用于 Pixel 的 Android 13 Beta 版计划”,然后一步步操作就可以。最后点击pixel手机的系统,就会提示新版本可更新了。

但是这种方式有几个缺陷,首先,登陆Google账号需要翻墙。其次同一步手机只能加入一个版本计划,加入了android12后必须退出才能加入android13。电脑翻墙还可以通过代理,手机翻墙还是蛮麻烦的。安卓11升12时我使用的是这种方式,但是12升13搞了好久还是无法解决手机翻墙的问题,于是放弃了这种方式。

直接刷写的方式

第二种方式就是直接刷写的方式。pixel的可以直接把chrome浏览器当作刷写工具,不需要下载额外的软件,这一点还是蛮方便的,我最终也是选择的这种方式升级的,具体介绍一下这种方式:

1:手机设置打开开发者模式,允许USB调试;

2:点击 Android刷写工具,打开新网页,如下图所示:

 3:新打开的网页,有一个弹出框(这里需要注意是否被浏览器拦截掉),点击同意ADB调试。(注意,这里也需要翻墙的,电脑要翻墙)

 4.识别到手机之后,需要在手机上设置为unlock模式才能刷机,否则刷不进去的。

5.设置完成后,点击install,就可以开始刷机了。首先是下载刷机包,然后安装。注意,此后就不要操作手机了,否则会导致刷机失败。

 6.刷机成功后,如下图所示,这时候,只要手机上点击按钮进行重启可以了。 

升级成功后,版本就升级到Android13了。

二.功能变化概览及适配方案 1.通知权限的调整

介绍:

Android13中,notifcation权限改成了运行时权限。运行时权限的意思不是说运行的时候申请,运行完就自动释放,而是说这是一个较为危险的权限,有可能涉及到用户隐私的权限。

简单来说,就是把权限级别升级了,申请方式不变,流程也不变,但是需要申请新的权限,老的已申请的通知权限在13版本上无法使用,哪怕targetSDK=32也不行。

总结下来,分为三种场景:

1.应用在系统升级到13之前已经具有通知权限,则自动授予新的通知权限POST_NOTIFICATIONS。

2.应用在13上新装,targetSDK=33,每次申请该权限时都会弹。如果用户拒绝,下一次还可以继续申请。

适配方案:

首先,targetSdkVersion改为33。

其次,manifest中声明相关权限

最后代码中判断版本进行相关申请,如下:

private void checkAndShow() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { NotificationManager manager = getSystemService(NotificationManager.class); boolean b = manager.areNotificationsEnabled(); if (!b) { String[] strings = {Manifest.permission.POST_NOTIFICATIONS}; requestPermissions(strings, 0); return; } showNotification(); return; } else { //继续执行老版本逻辑 } }

2.读写SD卡权限的调整

介绍:

Android13之前,读取SD卡只需要申请一个权限

但是Android13之后,这个权限被细化成了三个,也就是说,这是三个权限需要分别单独去申请了。

适配方案:

如果是升级Android13之前就已经具有读写SDK的权限,那么升级到13之后,自己具有上述三个权限。

如果是升级Android13之后新装的应用,并且targetSDK小于33,则申请READ_EXTERNAL_STORAGE权限时,会自动转化为对上述三个权限的申请,权限申请框只一个

如果是升级Android13之后新装的应用,并且targetSDK大于等于33,则申请READ_EXTERNAL_STORAGE权限时会自动拒绝(同理WRITE_EXTERNAL_STORAGE也是一样)。必须申请上面三个权限才可以。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { checkPermission.add(Manifest.permission.READ_MEDIA_AUDIO); checkPermission.add(Manifest.permission.READ_MEDIA_IMAGES); checkPermission.add(Manifest.permission.READ_MEDIA_VIDEO); } else { checkPermission.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);//启动 }

4.后台运行限制

13之前,应用的service是可以后台正常执行的。在13之后,某些情况下(比如低电量),会限制service的一些后台行为,比如限制网络的访问等等。用户进行前台互动操作后,则APP可以从受限分区移除。

主要分为三个级别,代码和描述如下:

private void handleAction() { UsageStatsManager systemService = getSystemService(UsageStatsManager.class); int appStandbyBucket = systemService.getAppStandbyBucket(); //1.没有任何限制 if (appStandbyBucket


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3