本页面介绍了 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 中锁屏集成的错误,请参阅关于 PendingIntent 和 PendingIntent 解决方法。在 Android 14 或 Android 13 QPR 中无需执行此操作,因为该问题已得到修复。
与安全中心集成
- 在您的设备上启用安全中心。
- (可选)修改安全中心配置文件以更改数据的提供方式。请参阅更新配置文件。对配置文件的更改必须满足自定义要求,并且必须使用 GTS 测试进行测试,该测试对修改施加了严格的约束。
- (可选)修改您的“设置”应用以添加或更改安全和隐私条目。
- 添加或更改对安全来源的支持,以确保安全中心与锁屏或生物识别技术(如果受支持)等信号配合使用。这可能需要在“设置”应用中进行一些更改才能正确实现此目的。例如,在配置文件中将“设置”软件包名称更改为相应的名称,并在您的“设置”应用中使用安全中心来源 API。
- (可选)通过叠加主题、内边距和其他功能自定义安全中心界面。
- 运行并通过相关的 GTS 和 CTS 测试。
- 在 13 中,确保您已提交设备指纹以进行服务器端允许列表操作。在 14 中无需执行此操作。
安全中心来源
安全中心来源向安全中心提供数据。来源通常由设备上的单独应用拥有。目前,仅允许系统应用作为安全来源。第三方应用不是安全来源。
以下是一些安全中心来源示例
- 锁屏
- 生物识别技术
- 安全更新
- 查找我的设备
- Google Play Protect
- Google 帐号安全检查
- 隐私信号
安全中心来源可以提供以下类型的数据
- 安全中心界面中的一个条目,用于将用户重定向到另一个屏幕。此条目具有一个状态,表示用户是否面临风险以及与该状态关联的其他元数据,例如,标题和摘要。
- 警告卡片(也称为问题),可以直接从安全中心解决,也可以通过将用户重定向到另一个屏幕来解决。每个问题还具有与之关联的其他元数据,例如标题、摘要、按钮标签和操作。
- 尝试向安全中心提供数据时可能发生的错误。
- 来源向安全中心发送数据的原因。
配置文件
安全中心来源在充当允许列表的配置文件中列出。此文件还为每个界面条目提供默认数据。配置文件可以指定静态重定向条目(不会影响安全中心状态)或问题(也称为静态安全来源)。如需了解更多信息,请参阅更新配置文件。
Mainline 模块
安全中心主要属于 PermissionController Mainline 模块的一部分,因此 Google 可以作为支持 Mainline 的 GMS OEM 设备 Mainline 更新的一部分来更新此功能。
非 GMS OEM 设备和不支持 Mainline 的 GMS OEM 设备可以使用安全中心(如果此功能包含在其系统映像中);但是,他们应使用 M-2022-11 或更高版本的代码。请参阅启用或停用安全中心,了解相关要求。
安全中心 API
安全中心 API 以 Java 编写,本页面上的代码示例也以 Java 编写。但是,由于 Kotlin 可与 Java 互操作,因此安全中心 API 可在 Kotlin 中使用。PermissionController 系统应用中与安全中心互动的多个部分以 Kotlin 编写。
您可以使用 API 与安全中心互动。这些 API 主要通过 SafetyCenterManager
(一个系统 API)进行访问。如需了解更多信息,请参阅与安全中心互动。
Intent 操作和 extra
从 Android 13 开始,在 Intent
类中定义了一个公共 Intent 操作(第三方应用可以访问),用于重定向到安全中心。
其他操作和 extra 在 SafetyCenterManager
中定义,并且仅可由系统应用访问,例如,允许重定向到特定问题。
安全中心已启用 API
SafetyCenterManager
公开了一个 API,用于返回设备上是否已启用安全中心。该 API 确认设备是否满足安全中心要求,例如设备是否安装了正确的 Mainline 模块版本。此验证用于确定是否在“设置”和其他位置显示安全中心。它还可用于确定是否应向安全中心提供数据。如需了解如何开启或关闭安全中心,请参阅启用或停用安全中心。
安全中心来源 API
安全中心来源使用安全中心来源 API 向安全中心提供动态数据。安全中心来源 API 执行以下功能
- 为给定的安全中心来源设置数据。
- 获取为给定的安全中心来源设置的最新数据。
- 报告给定的安全中心来源的错误。
安全中心来源可以选择接收信号以在特殊情况下(例如,打开安全中心页面时)向安全中心发送数据,以确保提供的数据是最新的。
内部安全中心 API
某些安全中心 API 是内部 API,仅供 PermissionController
Mainline 模块使用,外壳程序和测试除外。由于技术原因,这些 API 未被隐藏,而是通过 SafetyCenterManager
公开。
安全中心 API 执行以下功能
- 向安全中心来源发送信号以刷新其数据。
- 获取配置文件的表示形式。
- 从多个安全中心来源获取合并的数据。
- 订阅和取消订阅数据更改。
- 关闭警告卡片。
- 执行警告卡片操作。
测试 API
SafetyCenterManager
包括用于测试的安全中心测试 API。
安全中心测试 API 可以执行以下操作
- 清除安全中心存储的所有数据。
- 替换配置文件并清除替换。
Shell 命令
提供了一些 Shell 命令,用于通过 Android 调试桥 Shell (adb shell
) 与安全中心互动。使用 adb shell cmd safety_center help
可查看命令列表及其功能。
安全中心用户界面
安全中心用户界面在 PermissionController
模块内的 PermissionController
系统应用中定义。该界面由一个 Activity 和多个 Fragment 组成,这些 Activity 和 Fragment 使用内部安全中心 API中描述的 API。安全中心公开的快捷设置图块使用相同的界面组件,只是在布局方式上略有更改。
可以使用叠加层更改此页面的外观。如需了解更多信息,请参阅自定义安全中心界面。