本页将介绍 Android 中的安全和隐私设置,以及如何通过安全中心访问这些设置(包括结构、集成和自定义)。
从 Android 13 开始,安全中心将安全性和隐私权内容整合到名为安全性与隐私的页面中。您也可以通过“快捷设置”功能块访问安全中心。
安全中心会提供重定向条目,以便用户可以访问特定的安全和隐私设置。安全中心还会将来自多个信息来源的动态数据组合在一起,以此发现用户在其设备或账号中可以解决的问题。这些数据为用户提供大致的安全状态概况及相关的具体建议
图 1. 安全中心屏幕。
集成要求与准则
- Android 13 和 Mainline M-2022-11 或更高版本
- 启用安全中心的 Android 框架配置文件:
frameworks/base/core/res/res/values/config.xml
文件的可叠加config_enableSafetyCenter
字段设置为true
(默认)。
服务器端要求(仅适用于 Android 13):
DeviceConfig
标志safety_center_is_enabled
设置为true
(从 Android 14 开始,会默认设置为true
)。
准则
- 未实现安全中心的 GMS OEM 可以通过将
config.xml
文件的可叠加config_enableSafetyCenter
字段设置为false
(默认值为true
)来停用安全中心。如需了解详情,请参阅启用或停用安全中心。 - 为避免 Android 13 中的锁屏集成存在的 bug,请参阅 PendingIntent 简介和 PendingIntent 解决方法。无需在 Android 14 或 Android 13 QPR 中执行此操作,因为此问题已解决。
与安全中心集成
- 在您的设备上启用安全中心。
- (可选)修改安全中心配置文件以更改数据的提供方式。请参阅更新配置文件。对配置文件的更改必须满足自定义要求,并且必须通过执行严格限制的 GTS 测试进行测试。
- (可选)修改“设置”应用以添加或更改安全和隐私条目。
- 添加或更改对安全性信息来源的支持,以确保安全中心支持锁定屏幕或生物识别(如果支持)等信号。您可能需要在“设置”应用中进行一些更改才能正确实现这项功能。例如,将配置文件中的“设置”软件包名称更改为适当的名称,并使用“设置”应用中的安全中心信息来源 API。
- (可选)通过叠加主题、内边距和其他功能来自定义安全中心界面。
- 运行并通过相关的 GTS 和 CTS 测试。
- 在 Android 13 中,确保您已提交设备指纹以用于服务器端许可名单。在 Android 14 中无需执行此操作。
安全中心信息来源
安全中心信息来源会向安全中心提供数据。信息来源通常归设备上的另一个应用所有。目前只允许使用系统应用的安全性信息来源。第三方应用并不是安全性信息来源。
以下是一些安全中心信息来源的示例:
- 锁定屏幕
- 生物识别
- 安全更新
- 查找我的设备
- Google Play 保护机制
- Google 账号安全检查
- 隐私权信号
安全中心信息来源可提供以下类型的数据:
- 安全中心界面中的条目,用于将用户重定向到另一个屏幕。 此条目有一个状态表示用户是否处于风险状态,以及与状态关联的其他元数据(例如标题和摘要)。
- 警告卡片(也称为“问题”),可以直接通过安全中心解决,或者将用户重定向到另一个屏幕。每个问题还存在其他关联的元数据,例如标题、摘要、按钮标签和操作。
- 尝试向安全中心提供数据时可能发生的错误。
- 信息来源向安全中心发送数据的原因。
配置文件
安全中心信息来源列在一个许可名单中,可用作许可名单。此文件还会为每个界面条目提供默认数据。配置文件可以指定不影响安全中心状态或问题(也称为静态安全性信息来源)的静态重定向条目。如需了解详情,请参阅更新配置文件。
Mainline 模块
安全中心主要是 PermissionController Mainline 模块的一部分,因此 Google 可以将此功能作为支持 Mainline 的 GMS OEM 设备的 Mainline 更新的一部分进行更新。
非 GMS OEM 设备和不支持 Mainline 的 GMS OEM 设备可以使用安全中心(如果其系统映像中包含此功能);但是,他们应该使用 M-2022-11 或更高版本的代码。如需了解相关要求,请参阅启用或停用安全中心。
安全中心 API
Safety Center API 采用 Java 语言编写,本页面上的代码示例使用 Java 语言编写。不过,由于 Kotlin 可与 Java 互操作,因此安全中心功能可在 Kotlin 中使用。与安全中心互动的 PermissionController 系统应用的各个部分都是用 Kotlin 编写的。
您可以使用 API 与安全中心互动。这些 API 主要可通过系统 API SafetyCenterManager
进行访问。如需了解详情,请参阅与安全中心互动。
intent 操作和 extra
从 Android 13 开始,Intent
类中定义了一项公共 intent 操作(可通过第三方应用访问),以重定向到安全中心。
其他操作和 extra 在 SafetyCenterManager
中定义,并且仅可供系统应用访问(例如重定向到特定问题)。
启用了安全中心的 API
SafetyCenterManager
公开了一个 API,用于返回是否在设备上启用安全中心。该 API 用于确认设备是否符合安全中心要求,例如设备是否安装了正确的 Mainline 模块版本。此验证用于确定是否在“设置”和其他位置显示安全中心。这也可用于确定是否应向安全中心提供数据。如需了解如何开启或关闭安全中心,请参阅启用或停用安全中心。
安全中心信息来源 API
安全中心信息来源会使用安全中心信息来源 API 向安全中心提供动态数据。安全中心信息来源 API 执行以下功能:
- 设置给定安全中心信息来源的数据。
- 获取给定安全中心信息来源的最新数据集。
- 报告特定安全中心信息来源的错误。
安全中心信息来源可以选择在特殊情况(例如打开安全中心页面)接收信号,以便将数据发送到安全中心,以确保提供的数据是最新的。
内部安全中心 API
某些安全中心 API 仅限内部使用,仅供 PermissionController
Mainline 模块使用,但 shell 和测试除外。由于技术原因,这些 API 不会隐藏,并且由 SafetyCenterManager
提供。
Safety Center API 执行以下功能:
- 向安全中心信息来源发送信号以刷新他们的数据。
- 获取配置文件的表示法。
- 从多个安全中心信息来源获取合并数据。
- 订阅和退订数据更改。
- 关闭警告卡片。
- 执行警告卡片操作。
测试 API
SafetyCenterManager
包括用于测试的安全中心测试 API。
安全中心测试 API 可以:
- 清除安全中心存储的所有数据。
- 替换配置文件并清除替换值。
Shell 命令
系统提供了一些 shell 命令,以通过 Android 调试桥 shell (adb shell
) 与安全中心互动。使用 adb shell cmd safety_center help
可查看命令列表及其用途。
安全中心界面
安全中心界面在 PermissionController
系统应用中的 PermissionController
模块中定义。界面由一个 activity 和几个 fragment 组成,这些 fragment 利用内部安全中心 API 中介绍的 API。安全中心提供的“快捷设置”功能块使用相同的界面组件,但对布局方式稍作更改。
您可以使用叠加层更改此页面的外观和风格。如需了解详情,请参阅自定义安全中心界面。