通常我们说的适配一般指两个部分:
一个是影响在 Android 12 上运行的所有应用,无论采用哪种 targetSdkVersion 都不例外的部分
一个是只以Android12为目标的应用(targetSdkVersion为31)

下面说说第一个部分:

影响Android 12 上运行的所有应用的部分

一.Splash Screen

Android12新增了系统默认的App启动页,该启动页会使用App定义的主题和Icon生成。如果不进行适配产生的后果可能会有:
1.如果原本使用了android:windowBackground实现了启动页,那么这个实现会被默认的启动页样式替换
2.如果使用了一个额外的Activity作为启动页则会先弹出默认的启动页再弹出这个额外的Activity,用户会看到两次闪屏。

默认情况下,SplashScreen 使用主题的 windowBackground(如果它是单色)和启动器图标。启动画面的自定义通过向应用主题添加属性来完成。

自定义应用中的启动画面

1.设置主题属性以更改其外观
  • 设置背景
// An highlighted block
<item name="android:windowSplashScreenBackground">@color/xxx
</item>
  • 替换中心部位的图标,如果使用 AnimationDrawable 和 AnimatedVectorDrawable 可呈现动画效果且可绘制,则也会在显示起始窗口的同时播放动画。
<item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
  • 使用 windowSplashScreenAnimationDuration 设置启动画面在关闭之前显示的时长。最长时间为 1000 毫秒。

当应用绘制第一帧后,启动画面会立即关闭。如果需要延迟关闭,可以使用 ViewTreeObserver.OnPreDrawListener 让应用暂停绘制第一帧。

二.麦克风和摄像头切换开关

在 Android 12 中,部分设备允许用户通过按一个切换开关选项,为设备上的所有应用启用和停用摄像头和麦克风使用权限。该开关不影响应用处理 CAMERA 和 RECORD_AUDIO 权限的方式。

摄像头和麦克风切换开关会影响设备上的所有应用:

  • 当用户关闭摄像头使用权限后,应用会收到空白的摄像头画面。
  • 当用户关闭麦克风使用权限后,应用会收到无声音频。

检查设备是否支持麦克风和摄像头切换开关

SensorPrivacyManager sensorPrivacyManager = getApplicationContext().getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager.supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager.supportsSensorToggle(Sensors.CAMERA);

三.Display.getRealSize() & Display.getRealMetrics()废弃

Android 12 上进一步废弃了 Display.getRealMetrics() 和Display.getRealSize()。现在推荐使用 WindowMetrics, 并且谷歌提供了一个兼容到 Android 4.0 的 WindowManager 兼容库。通常情况可以使用如下代码代替以前计算屏幕宽高:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {metrics = activity.getWindowManager().getCurrentWindowMetrics();int width = metrics.getBounds().width();int height = metrics.getBounds().height();}

四.应用无法关闭系统对话框

为了加强用户与应用和系统互动时的控制,从 Android 12 开始,弃用了 ACTION_CLOSE_SYSTEM_DIALOGS intent 操作。除了一些特殊情况之外,当应用尝试调用包含此操作的 intent 时,系统会基于应用的目标 SDK 版本执行以下操作之一:

  • 如果应用以 Android 12 为目标平台,则会发生 SecurityException。

  • 如果应用以 Android 11(API 级别 30)或更低版本为目标平台,则系统不会执行 intent

五.大致位置

应用以 Android 12 为目标平台并且请求 ACCESS_FINE_LOCATION 权限,还须请求 ACCESS_COARSE_LOCATION 权限。必须在单个运行时请求中包含这两项权限。如果仅请求 ACCESS_FINE_LOCATION,则系统会忽略该请求,并在 Logcat 中记录以下错误消息:ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION

Android12适配指北相关推荐

  1. Android 8.0适配指北

    本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. Android适配系列: Android 6.0 的动态权限管理 Android 7.0脱坑指南 Android 8.0适配指北 ...

  2. Uni-app APP开发、适配指北

    跨端三剑客 近几年来,随着移动端开发的需求的不断变大,跨端框架也在不断的蓬勃发展,随之时间的推移,有三个跨端框架凭借其各自的优势,出现在大家的眼前Uniapp.Flutter.React Native ...

  3. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...

    <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议! 学习之前说学习 今天这篇文 ...

  4. OpenHarmony LiteOS C-SKY指令集移植指北

    摘要:本文介绍在OpenHarmony社区LiteOS-M项目中新增C-SKY指令集的开发流程,以及适配相应qemu工程的方法和步骤,供LiteOS内核相关开发者学习交流. 本文分享自华为云社区< ...

  5. 02《区块链财富指北》私钥篇(2):百行Python代码演示一私钥生成多公链公钥原理。

    私钥(2):百行Python代码演示一私钥生成多公链公钥原理. <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播 ...

  6. 计算机系应届生求职指北

    最近帮了一个朋友的朋友做了下职业规划,结合之前在微博上的一些问答,觉得不少应届生同学对求职有蛮多误解的,所以这里分享下我的一点经验吧.虽然本文题为指北,但只是一个面向对行业.对业界技术不熟悉的同学的操 ...

  7. iOS开发者的Weex伪最佳实践指北

    本文来自简书,原文地址:http://www.jianshu.com/p/43adc80ab60b 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享,也算是对学习 ...

  8. Laravel 集成 JPush 极光推送指北

    2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...

  9. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  10. 怎么用class引入svg_【蓝湖指北】走向设计巅峰,从蓝湖 Sketch 插件开始,用它!...

    用好蓝湖,提升团队协作效率,蓝湖指北,教你如何用好蓝湖.本期[蓝湖指北]如约而至- Sketch 作为一款轻量级的矢量设计工具,凭借其强大的界面设计功能,被大多数 UI 设计师所使用,日渐成为产品研发 ...

最新文章

  1. Kali Linux Web***测试之 WebSploit
  2. linux upx 报错 NotCompressibleException
  3. Windows 技术篇 - windows日期和时间设置里没有Internet 时间页签原因和解决方法
  4. Ribbon_窗体_实现Ribbon风格的窗体
  5. gitee插件在androidstudio使用踩坑
  6. 201119阶段二sqlite3
  7. Session.run() Tensor.eval()
  8. POS机C井例子代码(2)
  9. c++ 标准异常类层次结构_Java入门教程十一(异常处理)
  10. 基于bitbucket中央库的Git操作
  11. java多线程总结一:线程的两种创建方式及比较
  12. 前端 express使用教程
  13. MASM32编写TcpStatC再进阶 显示PID和对应进程说明符
  14. 基于卫星高度计海面高度异常资料获取潮汐调和常数方法及应用matlab代码
  15. win10系统怎样安装/更新独立显卡驱动
  16. 相对路径与绝对路径区别
  17. FPS透视自瞄辅助-游戏漏洞及原理
  18. ISPRS2022/遥感:Cross-spatiotemporal LULC from VHR remote sensing images基于深度学习域适应的VHR遥感影像跨时空土地覆盖分类
  19. tom 猫 android 版本 设计,一种Tom猫的简单实现
  20. Android 关机时的radio相关关闭流程

热门文章

  1. [导读]整合Spring MVC由于用到jstl,所以假如jstl便签用的jar包,启动tomcat时控制台出现了如下的输出:2014-3-25 23:54:49 org.apache.catal
  2. 高端科技—物联网、云计算、移动支付、3G四行业
  3. Android简易指南针
  4. CE-Net论文学习笔记
  5. 游戏建模需要掌握哪些软件?3D建模师的工作内容怎么样,如何学习入行?
  6. 41个外贸英语表达技巧!
  7. 一些Linux常见发行版本
  8. js封装 Ajax ——常用工具函数
  9. 微信APPUI设计PS设计稿-学生毕业设计作业
  10. 背包问题 模板详解!