设为首页 加入收藏

TOP

Android 13 新特性及适配指南(一)
2023-07-23 13:31:10 】 浏览:85
Tags:Android

Android13 Logo

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

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

适配点:

  • 细分媒体权限:
    READ_EXTERNAL_STORAGE 细分为IAMGES、VIDEO、AUDIO权限
    若设置 targetSdk>=33 则此项必需适配!
  • WebView调整:
    废弃setAppCacheEnabledsetForceDark方法;
    若设置 targetSdk>=33 则此项必需适配!
  • 静态广播注册:
    注册静态广播时,需设置对其他应用的可见性
    若设置 targetSdk>=33 则此项必需适配!
  • 通知权限:
    新增运行时通知权限:POST_NOTIFICATIONS
    若设置 targetSdk>=33 则此项必需适配!
  • Wi-Fi :
    新增 NEARBY_WIFI_DEVICES 运行时权限
    若设置 targetSdk>=33 则此项必需适配!
  • 身体传感器后台权限:
    新增 BODY_SENSORS_BACKGROUND 运行时权限
    若设置 targetSdk>=33 则此项必需适配!
  • 剪切板内容隐藏:
    新增内容隐藏API
    根据业务需求,选择性适配!
  • 非 SDK 接口的限制
    若设置 targetSdk>=33 则此项必需适配!

新特性:

  • 前台服务管理器:
    系统新增前台服务管理器
    系统新特性无需适配!

一、细分媒体权限

从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时:

  • 已授权READ_EXTERNAL_STORAGE权限的应用:系统将自动赋予对应的细化权限。
  • 未授权仍请求READ_EXTERNAL_STORAGE权限:亲测系统将不会授予任何权限。

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

  • 如果同时请求 READ_MEDIA_IMAGESREAD_MEDIA_VIDEO 权限,系统将会提示如下权限弹窗:
    READ_MEDIA_IMAGES、READ_MEDIA_VIDEO权限弹窗
  • 如果请求 READ_MEDIA_AUDIO 权限,系统将提示如下弹窗:
    READ_MEDIA_AUDIO权限申请弹窗

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

二、WebView

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

  • WebSettings.setAppCacheEnabled() 方法废弃
  • WebSettings.setForceDark() 方法废弃

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() 方法将被废弃。
基于以上更改:

  • 若开发者仍需自定义Webview主题颜色,可以使用:
    WebSettings.setAlgorithmicDarkeningAllowed()WebSettingsCompat.setAlgorithmicDarkeningAllowed()方法。
  • 若开发者仍然使用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+)为目标平台的应用,注册静态广播时,需设置对其他应用的可见性

  • 若对其他应用可见,广播注册时设置:Context.RECEIVER_EXPORTED
  • 若仅应用内使用,广播注册时设置:Context.RECEIVER_NOT_EXPORTED
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 开发者使用该权限时需动态申请,等待用户主动授权:
通知运行时权限

  • 对于以Android13(API 33+)为目标平台的
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇以开发之名|线上家装新美学——梦.. 下一篇uni-app如何实现USB插入后自动弹..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目