Android 12 变更

1、前台服务启动限制
在 Android 12上应用再也无法在后台运行时启动前台服务,
如果应用尝试在后台运行时启动前台服务,则会引发异常(少数特殊情况除外)。
当您的应用在后台运行时,请考虑使用 WorkManager 来计划和启动工作。
2、无法通过服务或广播接收器创建通知 trampoline
为了改进应用性能和用户体验,以 Android 12 为目标平台的应用无法从用作通知 trampoline 的服务或广播接收器中启动 activity。
换言之,当用户点按通知或通知中的操作按钮时,您的应用无法在服务或广播接收器内调用 startActivity()。
3、包含 intent 过滤器的应用组件必须声明导出的属性
包含 intent 过滤器的应用组件必须显式设置 android:exported 属性。
未设置该属性的应用无法安装在 Android 12 上。
4、待处理 intent 必须声明可变性
如果您的应用以 Android 12 为目标平台,您必须为您的应用创建的每个 PendingIntent 对象指定可变性
如需声明特定 PendingIntent 对象是否可变,请分别使用 PendingIntent.FLAG_MUTABLE 或 PendingIntent.FLAG_IMMUTABLE 标志。
如果您的应用试图在不设置任何可变标志的情况下创建 PendingIntent 对象,系统会抛出 IllegalArgumentException
5、在 Android 12上嵌套使用Intent 会发出警告
嵌套 intent 是在其他 intent 中作为 extra 传递的 intent
如要使用,使用 PendingIntent 代替嵌套 intent
6、WebView 中的 SameSite Cookie 行为
7、自定义通知变更
Android 12 改变了完全自定义通知的外观