为了防范垃圾广告和凭据钓鱼式攻击,从 Android 14 开始,只能向提供通话和闹钟功能的应用授予用于发送全屏通知的默认 USE_FULL_SCREEN_INTENT
权限。
对于安装在 Android 14 中的所有应用,USE_FULL_SCREEN_INTENT
权限默认处于启用状态。安装后,Google Play 商店会撤消不具备通话或闹钟功能的应用的全屏 intent (FSI) 权限。
对于在搭载低于 Android 13 版本的手机上安装的应用,USE_FULL_SCREEN_INTENT
权限默认保持启用状态。
用户权限
在 Android 14 中,应用可以使用 NotificationManager#canUseFullScreenIntent()
检查自己能否发送全屏通知。为了获得发送全屏通知的用户权限,应用需要使用 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
启动管理全屏 intent 设置,如图 1 所示:
图 1. 使应用能够发送全屏 intent 的界面。
管理全屏 intent 设置位于特殊应用访问权限下的设置菜单中。借助此界面,用户可以根据需要撤消此权限。
OEM 要求
在 Android 14 中,应用的 FSI 权限默认处于启用状态。原始设备制造商 (OEM) 必须指定哪些应用有资格获得 FSI 权限。OEM 必须确保第三方应用商店使用 PackageInstaller.SessionParams
(特别是结合 PERMISSION_STATE_DEFAULT
、PERMISSION_STATE_DENIED
和 PERMISSION_STATE_GRANTED
参数)为其应用设置 FSI 权限的初始授权状态。
验证
您可以使用 NotificationFullScreenIntentVerifierActivity.java
中的 CTS 验证程序测试和 NotificationManagerTest.java
中的 CTS 测试来验证 FSI 限制。
手动测试
如需手动测试应用的 FSI 限制,请按以下步骤操作:
- 声明
USE_FULL_SCREEN_INTENT
添加到应用的AndroidManifest.xml
文件中。 - 使用
ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
管理用于开启或关闭 FSI 的设置。 - 在测试手机上,手动切换用户对于全屏通知的权限,如图 1 所示。
- 发送 FSI 通知。
- 针对以下 FSI 权限和显示模式组合,验证全屏通知的外观:
FSI 权限 | 已解锁屏幕 | 已锁定屏幕 | 屏幕外 | 屏幕常亮 (AOD) |
由用户授予 | 带药丸按钮的常驻浮动通知 (HUN) | 启动 FSI | 启动 FSI | 启动 FSI |
被用户拒绝 | 带药丸按钮 HUN 显示 60 秒 | 带药丸按钮的 HUN 会在列表中优先显示 60 秒 | AOD 处于开启状态,显示 60 秒带药丸按钮的 HUN | 带药丸按钮 HUN 显示 60 秒 |