文章目录

前言

一、用户体验

1. 前台服务通知UX延迟

2. 手势导航的沉浸式模式改进

二、 隐私

1. Netlink MAC限制

三、安全

1. 阻止不受信任的触摸事件

2. 受影响的应用程序

3. 例外情况

4. 当不受信任的触摸被阻止时检测

5. 测试更改

6. 应用程序无法关闭系统对话框

7. 例外情况

四、更新的非SDK接口限制



前言

Android 12平台包含可能影响应用程序的行为更改。以下行为更改适用于在Android 12上运行的所有应用程序,而不考虑targetSdkVersion。你应该测试你的应用程序,然后根据需要对其进行修改,以便在适用的情况下正确地支持这些应用程序

一、用户体验

1. 前台服务通知UX延迟

为了在android12上为短期运行的前台服务提供简化的体验,系统可以将某些前台服务的前台服务通知的显示延迟10秒。此更改使短期任务有机会在其通知出现之前完成

如果前台服务至少具有以下特征之一,则系统会在服务启动后立即显示相关通知:

  • 该服务与包含操作按钮的通知相关联。
  • 该服务的foregroundServiceType为mediaPlayback、mediaProjection或phoneCall。
  • 该服务提供与电话呼叫、导航或媒体播放相关的用例,如通知的category属性中所定义。
  • 设置通知时,服务已通过调用setShowForeGround立即()退出行为更改

2. 手势导航的沉浸式模式改进

Android 12简化了沉浸式模式,使得手势导航更容易,并且与观看视频和阅读书籍等活动的其他体验更加一致。

二、 隐私

1. Netlink MAC限制

android12扩展了受android11引入的MAC地址可用性变化影响的应用程序的范围。在Android 12上,无论目标SDK版本如何,这些更改都会影响所有应用程序。

相关API返回空值或占位符值,具体取决于应用程序的目标SDK版本:

  • 如果你的应用程序针对Android 12,API将返回null。
  • 如果您的应用程序针对Android 11或更低版本,API将返回以下占位符值:02:00:00:00:00。

特别是,如果您的应用程序在运行Android 12的设备上调用getHardwareAddress(),Logcat中将显示以下消息:

CompatibilityChangeReporter: Compat change id reported: 170188668;

如果你的应用目标是Android 12,你可以通过禁用RETURN_NULL_HARDWARE_ADDRESS 标志暂时让受影响的api返回占位符值而不是null。

提醒您,在应用程序中执行网络连接操作时,请使用ConnectivityManager,而不要使用较低级别的API,如NetworkInterface、getifaddrs()或Netlink套接字。

三、安全

1. 阻止不受信任的触摸事件

为了保护系统安全和良好的用户体验,Android 12防止应用程序使用触摸事件,因为覆盖以不安全的方式遮挡了应用程序。换句话说,除了少数例外,系统会阻止通过特定窗口的触摸。

2. 受影响的应用程序

此更改会影响选择允许触摸通过其窗口的应用程序,例如使用标志FLAG_NOT_TOUCHABLE 标志。几个示例包括但不限于以下内容:

  • 需要系统SYSTEM_ALERT_WINDOW窗口权限的覆盖,例如使用类型TYPE_APPLICATION_OVERLAY覆盖和使用标志FLAG_NOT_TOUCHABLE的窗口。
  • 使用标志FLAG_NOT_TOUCHABLE Activity windows 。
  • Toast messages.

3. 例外情况

在以下情况下,允许“通过”接触:

  • 应用程序内的交互。你的应用程序显示覆盖图,并且覆盖图仅在用户与你的应用程序交互时显示。
  • 受信任的窗口。这些窗口包括(但不限于)以下内容:

a. Accessibility windows
                                                                             b. Input method editor (IME) windows
                                                                             c. Assistant windows

  • 看不见的窗口,该 window's root view 是 GONE 或者 INVISIBLE.
  • 完全透明的窗口,window 的alpha属性为0.
  • 足够透明的系统警报窗口,当组合的不透明度小于或等于系统对触摸的最大遮挡不透明度时,系统认为一组系统警报窗口足够透明。在“开发人员预览2”中,此最大不透明度为0.8,但此值可能会在以后的“开发人员预览”中更改

4. 当不受信任的触摸被阻止时检测

如果触摸操作被系统阻止,Logcat会记录以下消息:

Untrusted touch due to occlusion by PACKAGE_NAME

5. 测试更改

在运行Android 12 Developer Preview 2的设备上,默认情况下会阻止不受信任的触摸。要允许不受信任的接触,请在终端窗口中运行以下ADB命令:

# A specific app
adb shell am compat disable BLOCK_UNTRUSTED_TOUCHES com.example.app# All apps
# If you'd still like to see a Logcat message warning when a touch would be
# blocked, use 1 instead of 0.
adb shell settings put global block_untrusted_touches 0

要将行为还原为默认行为(阻止不受信任的接触),请运行以下命令:

# A specific app
adb shell am compat reset BLOCK_UNTRUSTED_TOUCHES com.example.app# All apps
adb shell settings put global block_untrusted_touches 2

6. 应用程序无法关闭系统对话框

为了提高用户在与应用程序和系统交互时的控制能力,Android 12已经不再推荐ACTION_CLOSE_SYSTEM_DIALOGS。除少数特殊情况外,当应用程序尝试调用包含此操作的意图时,系统会根据应用程序的目标SDK版本执行以下操作之一:

  • 如果您的应用程序针对Android 12,则会发生安全异常。
  • 如果您的应用程序针对Android 11(API级别30)或更低版本,则不会执行该意图,并且Logcat中会显示以下消息:
E ActivityTaskManager Permission Denial: \
android.intent.action.CLOSE_SYSTEM_DIALOGS broadcast from \
com.package.name requires android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS, \
dropping broadcast.

7. 例外情况

在以下情况下,应用程序仍然可以关闭Android 12上的系统对话框:

  • 你的应用程序正在运行检测测试。
  • 你的应用程序以Android 11或更低版本为目标,并在通知抽屉顶部显示一个窗口。

注意:如果你的应用目标是安卓12,在这种情况下你不需要使用ACTION_CLOSE_SYSTEM_DIALOGS 对话框。这是因为,如果应用程序在通知抽屉顶部有一个窗口时调用startActivity(),系统会自动关闭通知抽屉。

  • 你的应用目标是Android 11或更低版本。此外,用户已经与通知交互,可能使用通知的操作按钮,并且您的应用程序正在处理服务或广播接收器以响应该用户操作。

四、更新的非SDK接口限制

android12包括基于与Android开发者的合作和最新的内部测试的受限非SDK接口的更新列表。只要有可能,在限制非SDK接口之前,我们就要确保公共替代方案可用。

如果你的应用程序不针对Android 12,那么其中的一些更改可能不会立即影响你。但是,虽然您当前可以使用一些非SDK接口(取决于您的应用程序的目标API级别),但使用任何非SDK方法或字段都会带来破坏您的应用程序的高风险。

如果你不确定你的应用程序是否使用非SDK接口,你可以测试你的应用程序来找出答案。如果你的应用程序依赖于非SDK接口,你应该开始计划迁移到SDK替代品。尽管如此,我们知道有些应用程序有使用非SDK接口的有效用例。如果在应用程序中找不到使用非SDK接口的替代方法,则应请求新的公共API。

要了解有关此版本Android中的更改的更多信息,请参阅Android 12中非SDK接口限制的更新。要了解有关非SDK接口的更多信息,请参阅非SDK接口的限制。

Android S 新特性:应用行为更改相关推荐

  1. Android N 新特性

    2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布.2016年6月,Android N正式命名为"牛轧糖" 本届I/O开发者大会上,Goog ...

  2. 魅族新系统android o,Android O新特性 原来魅族Flyme6早已实现

    原标题:Android O新特性 原来魅族Flyme6早已实现 在Android N系统发布一年之后,谷歌3月22日又推出了新一代的 Android O 开发者预览版.在Android O的开发者预览 ...

  3. 魅族android p,2.Android P新特性实践-Slices

    Android P新特性实践-Slices 概述 在2018年谷歌I/O开发者大会上,谷歌发布了万众期待的Android最新版本-Android P.Slice作为Android P版本更新的一大功能 ...

  4. Android N新特性

    Android N新特性 Jit编译器,安装更快,apk占用空间更小 Vulkan渲染引擎(用于游戏开发) Doze模式更加智能 通知栏(同类通知合并.快捷回复) 分屏模式及快捷切换 无缝更新

  5. android 通知历史,Android P新特性:追踪应用通知历史

    原标题:Android P新特性:追踪应用通知历史 IT之家3月9日消息 不久前,谷歌已经正式推出了首个Android P开发者预览版,包含了许多新特性.对此,IT之家也进行了一系列报道.该系统的新特 ...

  6. Android O 新特性和行为变更总结

    Android O新特性和行为变更总结 原文地址:https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651232573&id ...

  7. Android O新特性和行为变更总结zz

    https://mp.weixin.qq.com/s/Ezfm-Xaz3fzsaSm0TU5LMw Android O 行为变更 https://developer.android.google.cn ...

  8. 社区说|Android 13 新特性 EROFS-只读文件系统解析

    活动时间 7 月 28 日(本周四) 20:00 - 21:00 活动日程 20:00 - 20:45 主题分享 Android 13新特性 EROFS-只读文件系统解析 介绍 Android 13的 ...

  9. Android O新特性和行为变更总结

    原文地址(QQ音乐微信公众号首发): https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651232573&idx=1&am ...

  10. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. 让Transformer的推理速度提高4.5倍,这个小trick还能给你省十几万
  2. (九)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之DNAT
  3. python【力扣LeetCode算法题库】217-存在重复元素
  4. java类获取声明,获取用于MethodInvocation的实际类而不是声明类 - java
  5. Java:四种取整的方法
  6. debian/ubuntu19.10下安装使用护眼软件f.lux
  7. python内核_python内核_python内核语言_python版本内核 - 云+社区 - 腾讯云
  8. bug?VS2010中CImageList::DrawIndirect总是返回失败
  9. python读取数据库文件的扩展名_Python读取sqlite数据库文件的方法分析
  10. Calender日历类
  11. java包名和类名可以一样吗_Java入门第三课:Java基本语法
  12. 3.Android的新虚拟ART与原虚拟机DVM的区别
  13. flask的跨域问题
  14. 网页php如何判断登录手机串号_php判断是否是手机登陆
  15. 计算机网络telnet命令作用,telnet命令使用方法详解
  16. Windows程序设计-位图和位块传输
  17. 第13期-在线的文章摘要生成器, 自己写了一个支持中文的
  18. 编程网站:21 个学习网站推荐给你,大部分编程语言都在这里了
  19. workman 和swoole 区别
  20. c编程----段定义的使用

热门文章

  1. 使用 GPG 为极狐GitLab git commit 签名
  2. 用Python编写自动下载网络小说的脚本
  3. 2020年十大OA办公系统排行榜
  4. python下载歌曲教程视频_实现python批量下载网易云音乐的免费音乐
  5. Day 5 字典以及字典的用法
  6. 小白开发微信小程序52--测试小程序
  7. CGB2109-Day12-用户模块管理
  8. Spring依赖注入有哪些方式?
  9. ulpfec,flexFec,Pro-MPEG cop3协议对比
  10. 高速AD采集项目JESD204B采集卡详细上板教程