文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 13 新特性及适配指南

2023-08-19 20:44

关注

Android13 Logo

Android 13(API 33)2022年8月15日 正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目。
GoogleSource Android13_r3 20220815
截止到笔者撰写这篇文章时,国内部分应用软件开发厂商已逐步接到手机厂商(华米OV等)的新版本适配要求。当前,对于Android应用开发者来说,Android 13 的软件兼容适配已需提上工作日程。

为了贴合这篇文章的标题,本篇文章结合Android Developer官方文档,围绕Android13适配点Android13新特性两个方面进行详细说明。

适配点:

新特性:

一、细分媒体权限

从Android 13开始,以Android13(API 33+)为目标平台的应用,系统新增运行时权限READ_MEDIA_IAMGESREAD_MEDIA_VIDEOREAD_MEDIA_AUDIO 替代原有的READ_EXTERNAL_STORAGE权限。

权限权限说明
READ_MEDIA_IAMGES图片权限
READ_MEDIA_VIDEO视频权限
READ_MEDIA_AUDIO音频权限

新增细分的媒体权限说明

当应用升级到targetSdk>=33时:

细分媒体权限动态申请弹窗样式:

官方参考:
Android Developer 细分媒体权限:
https://developer.android.google.cn/about/versions/13/behavior-changes-13

二、WebView

从Android 13开始,以Android13(API 33+)为目标平台的应用,WebView存在以下方法与API调整:

2.1 setAppCacheEnabled 废弃

WebView 95+版本不再支持 setAppCacheEnabled
WebSettings.setAppCacheEnabled()方法废弃

Chrome 85+版本不再支持AppCache
Chrome 85+版本不再支持AppCache

2.2 setForceDark 废弃

从Android 13开始以Android13(API 33+)为目标平台的应用,系统会根据应用的主题属性isLightTheme,自动设置WebView的浅色或深色主题样式(系统会根据 isLightTheme 来设置 prefers-color-scheme)。同时,开发者Webview设置主题样式相关API WebSettings.setForceDark() 方法将被废弃。
基于以上更改:

W/cr_WebSettings: setForceDark() is a no-op in an app with targetSdkVersion>=T

官方参考:
Android Developer 静态广播注册官方介绍:
https://developer.android.google.cn/about/versions/13/behavior-changes-13

三、静态广播注册

从Android 13开始,以Android13(API 33+)为目标平台的应用,注册静态广播时,需设置对其他应用的可见性

private void registerTestReceiver() {    IntentFilter filter = new IntentFilter();    filter.addAction("com.xiaxl.test.action");    // api >= 33    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {        // 跨应用间使用        MainActivity.this.registerReceiver(mTestReceiver, filter, Context.RECEIVER_EXPORTED);        // 应用内使用        //MainActivity.this.registerReceiver(mTestReceiver, filter, Context.RECEIVER_EXPORTED);    }    // api <= 32    else {        MainActivity.this.registerReceiver(mTestReceiver, filter);    }}

官方参考:
Android Developer 静态广播注册官方介绍:
https://developer.android.google.cn/about/versions/13/features#java

四、通知权限

Android 13 引入了一种新的运行时通知权限:POST_NOTIFICATIONS
POST_NOTIFICATIONS 权限级别被定义为dangerous 开发者使用该权限时需动态申请,等待用户主动授权:
通知运行时权限

    // Java代码动态申请POST_NOTIFICATIONS权限if (Build.VERSION.SDK_INT >= 33) {    int checkPermission =            ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.POST_NOTIFICATIONS);    if (checkPermission != PackageManager.PERMISSION_GRANTED) {        //动态申请        ActivityCompat.requestPermissions(MainActivity.this, new String[]{                Manifest.permission.POST_NOTIFICATIONS}, PERMISSION_REQUEST_CODE);    } else {        //showRecordNotification();    }} else {    //showRecordNotification();}

POST_NOTIFICATIONS 动态授权申请弹窗如下图所示:
POST_NOTIFICATIONS动态授权弹窗

以Android12(API 32-)为目标平台的应用,首次显示通知时,弹窗提醒

官方参考:
Android Developer 通知运行时权限官方介绍:
https://developer.android.google.cn/guide/topics/ui/notifiers/notification-permission

五、Wi-Fi 权限

从Android 13开始,Android系统新增了NEARBY_WIFI_DEVICES权限,将原有的ACCESS_FINE_LOCATION权限 与 Wi-Fi能力使用进行了区分(避免早先开发者使用Wi-Fi能力时,需要请求用户位置权限,从而引起用户的歧义)。

NEARBY_WIFI_DEVICES权限

从Android 13开始,开发者只要不通过Wi-Fi推导用户的物理位置将无需再请求 ACCESS_FINE_LOCATION 权限,同时官方总结了新增权限NEARBY_WIFI_DEVICES的如下使用场景:

NEARBY_WIFI_DEVICES权限使用场景

官方参考:
Android Developer NEARBY_WIFI_DEVICES:
https://developer.android.google.cn/reference/android/Manifest.permission

六、剪切板内容隐藏

从Android 13(API 33)开始,Android剪切板新增了一项新API
Android 13(API 33)开始,用户可以选择使用API PersistableBundle#(ClipDescription.EXTRA_IS_SENSITIVE, true)隐藏要复制到剪切板的用户账户、密码登敏感信息。

相关API使用举例如下:

private void addData2Clipboard() {    ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);    ClipData clipData = ClipData.newPlainText("111111", "我是密码");    ClipDescription description = clipData.getDescription();    // 隐私内容:剪切板加密    PersistableBundle persistableBundle = new PersistableBundle();    if (Build.VERSION.SDK_INT >= 33) {        persistableBundle.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true);    } else {        persistableBundle.putBoolean("android.content.extra.IS_SENSITIVE", true);    }    description.setExtras(persistableBundle);    // 剪切板添加加密内容    clipboardManager.setPrimaryClip(clipData);}

不使用新API使用新API隐藏敏感信息,剪切板前后对比如下所示:

剪切板内容隐藏API使用效果

七、身体传感器后台权限

从Android 13开始,以Android13(API 33+)为目标平台的应用,在后台访问身体传感器(例如心率、体温和血氧饱和度)时,除了需要请求现有的 BODY_SENSORS 权限外,还需要请求 BODY_SENSORS_BACKGROUND 权限。

身体传感器后台权限

官方参考:
Android Developer BODY_SENSORS_BACKGROUND:
https://developer.android.google.cn/reference/android/Manifest.permission

八、非 SDK 接口限制

官方从 Android 9(API 级别 28)开始,逐步开始对应用使用的非 SDK 接口实施了限制。
如果你的APP通过引用非 SDK 接口或尝试使用反射或 JNI 来获取句柄,这些限制就会起作用。官方给出的解释是为了提升用户体验、降低应用崩溃风险

8.1、非SDK接口检测工具

官方给出了一个检测工具,下载地址:veridex
https://android.googlesource.com/platform/prebuilts/runtime/+archive/master/appcompat.tar.gz

veridex使用方法:

appcompat.sh --dex-file=apk.apk

veridex检测截图

8.2、blacklist、greylist、greylist-max-o、greylist-max-p含义

以上截图中,blacklist、greylist、greylist-max-o、greylist-max-p含义如下:

官方参考:
Android Developer 非SDK接口限制:
https://developer.android.google.cn/guide/app-compatibility/restrictions-non-sdk-interfaces

九、前台服务管理器

从Android 13(API 33)开始,Android通知栏中新增了一项新特性
用户可以选择在通知栏中通过“前台服务管理器”,对“正在运行的前台服务”进行停止操作。

前台服务管理器

参考

Android Developer:Andoid13
https://developer.android.google.cn/about/versions/13

AOSP:Android13版本说明
https://source.android.google.cn/docs/setup/start/android-13-release

GoogleSource:Android13_r3
https://android.googlesource.com/platform/build/+/refs/tags/android-13.0.0_r4

= THE END =

文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,欢迎关注我的公众号。

来源地址:https://blog.csdn.net/xiaxl/article/details/127493917

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯