全屏 intent 限制

为了防止广告垃圾邮件和凭据网络钓鱼,从 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 所示

fsi-ui

图 1. 用于启用应用发送全屏 Intent 的 UI。

管理全屏 Intent 设置位于设置菜单中的特殊应用访问权限下。用户可以使用此 UI 在需要时撤销此权限。

OEM 要求

在 Android 14 中,默认情况下启用应用的 FSI 权限。OEM 必须指定哪些应用符合 FSI 权限的条件。OEM 必须确保第三方应用商店使用 PackageInstaller.SessionParams 为其应用设置 FSI 权限的初始授予状态,特别是使用 PERMISSION_STATE_DEFAULTPERMISSION_STATE_DENIEDPERMISSION_STATE_GRANTED 参数。

验证

使用 NotificationFullScreenIntentVerifierActivity.java 中的 CTS Verifier 测试和 NotificationManagerTest.java 中的 CTS 测试来验证 FSI 限制。

手动测试

按照以下步骤手动测试应用上的 FSI 限制

  1. 在应用的 AndroidManifest.xml 文件中声明 USE_FULL_SCREEN_INTENT
  2. 使用 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT 来管理设置以打开或关闭 FSI。
  3. 在您的测试手机上,手动切换全屏通知的用户权限,如图 1 所示。
  4. 发送 FSI 通知。
  5. 验证以下 FSI 权限和显示模式组合下全屏通知的外观
FSI 权限 解锁屏幕 锁屏 熄屏 息屏常显 (AOD)
用户已授权 带有药丸按钮的持久性浮动通知 (HUN) 启动 FSI 启动 FSI 启动 FSI
用户已拒绝 带有药丸按钮的 HUN,持续 60 秒 带有药丸按钮的 HUN 在列表中首先显示 60 秒 AOD 开启,显示带有药丸按钮的 HUN,持续 60 秒 带有药丸按钮的 HUN,持续 60 秒