啟用或停用安全中心
如要啟用或停用安全中心,請使用
config_enableSafetyCenter
布林值欄位
frameworks/base/core/res/res/values/config.xml
檔案。
在大多數裝置上,系統預設支援安全中心,例如手機 和平板電腦在某些板型規格中,安全中心會預設為停用, 例如 Android Auto、TV 裝置和 Wear 平台
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- ... -->
<!-- Determines whether SafetyCenter feature is enabled. -->
<bool name="config_enableSafetyCenter">true</bool>
<!-- ... -->
</resources>
如要支援安全中心,請將 config_enableSafetyCenter
設為 true
。如果發生以下情況:
不想支援安全中心,請將此值設為 false
即可停用。
停用安全中心後,系統將試圖 系統會改為在隱私權頁面中開啟「設定」應用程式。您試圖與 API 會在不發出通知的情況下略過,或傳回預設值。相關的快速 取決於是否顯示設定資訊方塊和設定項目 已啟用安全中心。
DeviceConfig 標記
除了透過config_enableSafetyCenter
啟用安全中心外
DeviceConfig
旗標 (safety_center_is_enabled
) 用於遠端啟用或停用安全功能
中央。
如果是 Android 14 以上版本,則不需要採取進一步行動
因為此標記預設為 true
在 Android 13 中,安全中心預設為停用
且透過許可清單啟用。提交裝置
指紋,並與 TAM 聯絡,獲準加入允許清單。請注意,
您需要將主線版本 M-2022-11
以上版本加入許可清單。
如要在本機開發和測試,您可在本機啟用或停用這個標記
使用 adb
指令 (直到重新啟動為止)。舉例來說,如要啟用標記:
adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true
接著,確認是否已啟用安全中心:
adb root
adb shell cmd safety_center enabled
輸出結果會傳回裝置是否已正確啟用安全中心。
更新設定檔
使用 safety_center_config.xml
設定檔修改
以及安全中心畫面只要您符合
自訂需求。
疊加設定檔
如要重疊 safety_center_config.xml
檔案,請參閱變更
處理應用程式資源
,瞭解如何修改執行階段資源疊加層 (RRO)。
在 Android 14 中,請務必將
res/raw-v34/safety_center_config.xml
檔案,而非
以 res/raw/safety_center_config.xml
做為前者的優先權
適用於其他範圍限定為 v34
的檔案,例如:
res/values-v34/strings.xml
)。覆蓋套件的 SDK 必須低於最低標準
34
,否則在最佳化期間,v34
限定詞可能會被移除。
此外,請務必使用靜態疊加層,因為這個值會在開機週邊載入
讓應用程式從可以最快做出回應的位置
回應使用者要求
如果是 Android 開放原始碼計畫 (AOSP) 裝置,請指定套件
com.android.safetycenter.resources
。沒有任何疊加層設定
目標。所有資源均可重疊,內容不會受到任何限制。
針對設為接收 Mainline 更新的 GMS 裝置,請指定
com.google.android.safetycenter.resources
套件。指定設定
SafetyCenterConfig
。這項設定需要疊加套件位於
product
、system
或 vendor
分區。GMS 原始設備製造商 (OEM) 應複製
Google 提供 safety_center_config.xml
file 和限制
GTS 允許的修改方式
測試。疊加層定義
應該接近:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.overlay.package"
android:versionCode="1"
android:versionName="1.0">
<application android:hasCode="false" />
<overlay
android:targetPackage="com.google.android.safetycenter.resources"
android:targetName="SafetyCenterConfig"
android:isStatic="true"
android:priority="0"/>
</manifest>
針對未設定接收 Mainline 更新的 GMS 裝置,請指定
com.android.safetycenter.resources
套件。沒有任何重疊設定
。疊加套件必須使用套件名稱
com.google.android.safetycenter.resources
。
GMS 原始設備製造商 (OEM) 應複製 Google 提供的 safety_center_config.xml
檔案
只能修改 GTS 測試允許的內容。GMS 原始設備製造商也必須定義
XML 設定中使用的字串。
檔案結構
大致來說,safety_center_config.xml
檔案是安全性清單。
資料來源這些安全來源會分門別類,方便管理
安全中心畫面,例如「應用程式安全性」或「螢幕鎖定」。請注意,
這份清單會定義顯示順序:
<safety-center-config> <!-- Wrapper for the Safety Center configuration -->
<safety-sources-config>< !-- Wrapper for the safety sources groups -->
<safety-sources-group> <!-- Contains information about a safety sources group -->
<dynamic-safety-source /> <!-- Contains information about a safety source -->
<!-- More safety sources in the group -->
</safety-sources-group> <!-- More safety sources groups -->
</safety-sources-config>
</safety-center-config>
Google 設定檔
Android 開放原始碼計畫設定檔位於
packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml
。
在 Android 13 中,Google 設定檔如下:
<safety-center-config>
<safety-sources-config>
<safety-sources-group
id="GoogleAppSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
<dynamic-safety-source
id="GooglePlayProtect"
packageName="com.android.vending"
profile="all_profiles"
intentAction="com.google.android.finsky.PLAY_PROTECT"
title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GoogleAppProtectionService"
packageName="com.google.android.odad"
profile="primary_profile_only"
initialDisplayState="hidden"
loggingAllowed="false"/>
</safety-sources-group>
<safety-sources-group
id="AndroidLockScreenSources"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
<dynamic-safety-source
id="AndroidLockScreen"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
initialDisplayState="disabled"
maxSeverityLevel="300"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="AndroidBiometrics"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
maxSeverityLevel="0"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="GoogleAccountsSources"
title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
<dynamic-safety-source
id="GoogleSecurityCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="GoogleDeviceFinderSources"
title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
<dynamic-safety-source
id="GoogleFindMyDevice"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GoogleRogueTag"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="GoogleUpdateSources"
title="@com.google.android.safetycenter.resources:string/google_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
<dynamic-safety-source
id="GoogleSecurityUpdates"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GooglePlaySystemUpdate"
packageName="com.android.vending"
profile="primary_profile_only"
intentAction="android.settings.MODULE_UPDATE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySources"
title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
statelessIconType="privacy">
<static-safety-source
id="AndroidPermissionUsage"
profile="primary_profile_only"
intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
<static-safety-source
id="AndroidPermissionManager"
profile="primary_profile_only"
intentAction="android.intent.action.MANAGE_PERMISSIONS"
title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
<static-safety-source
id="AndroidPrivacyControls"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidNotificationListener"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidBackgroundLocation"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidPermissionAutoRevoke"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="AndroidAdvancedSources"
title="@com.google.android.safetycenter.resources:string/google_advanced_title">
<dynamic-safety-source
id="AndroidWorkPolicyInfo"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
<static-safety-source
id="AndroidAdvancedSecurity"
profile="primary_profile_only"
intentAction="com.android.settings.security.SECURITY_ADVANCED_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_advanced_security_title"
summary="@com.google.android.safetycenter.resources:string/google_advanced_security_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_security_search_terms"/>
<static-safety-source
id="AndroidAdvancedPrivacy"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_ADVANCED_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_advanced_privacy_title"
summary="@com.google.android.safetycenter.resources:string/google_advanced_privacy_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_privacy_search_terms"/>
</safety-sources-group>
</safety-sources-config>
</safety-center-config>
在 Android 14 中,Google 設定檔如下:
<safety-center-config>
<safety-sources-config>
<safety-sources-group
id="GoogleAppSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
<dynamic-safety-source
id="GooglePlayProtect"
packageName="com.android.vending"
profile="all_profiles"
intentAction="com.google.android.finsky.PLAY_PROTECT"
title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
deduplicationGroup="AppSecurity"/>
<issue-only-safety-source
id="GoogleAppProtectionService"
packageName="com.google.android.odad"
profile="primary_profile_only"
loggingAllowed="false"
deduplicationGroup="AppSecurity"/>
</safety-sources-group>
<safety-sources-group
id="AndroidLockScreenSources"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
<dynamic-safety-source
id="AndroidLockScreen"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
initialDisplayState="disabled"
notificationsAllowed="true"
maxSeverityLevel="300"/>
<dynamic-safety-source
id="AndroidBiometrics"
packageName="com.android.settings"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
maxSeverityLevel="0"/>
</safety-sources-group>
<safety-sources-group
id="GoogleAccountsSources"
title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
<dynamic-safety-source
id="GoogleSecurityCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GooglePasswordCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
initialDisplayState="hidden"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="false"/>
</safety-sources-group>
<safety-sources-group
id="GoogleDeviceFinderSources"
title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
<dynamic-safety-source
id="GoogleFindMyDevice"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
<dynamic-safety-source
id="GoogleRogueTag"
packageName="com.google.android.gms"
profile="primary_profile_only"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
initialDisplayState="hidden"/>
</safety-sources-group>
<safety-sources-group
id="GoogleUpdateSources"
title="@com.google.android.safetycenter.resources:string/google_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
<dynamic-safety-source
id="GoogleSecurityUpdates"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
<dynamic-safety-source
id="GooglePlaySystemUpdate"
packageName="com.android.vending"
profile="primary_profile_only"
intentAction="android.settings.MODULE_UPDATE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
<dynamic-safety-source
id="GoogleBackupAndRestore"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
title="@com.google.android.safetycenter.resources:string/google_backup_title"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySources"
title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
statelessIconType="privacy">
<static-safety-source
id="AndroidPermissionManager"
profile="primary_profile_only"
intentAction="android.intent.action.MANAGE_PERMISSIONS"
title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
<static-safety-source
id="AndroidPermissionUsage"
profile="primary_profile_only"
intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
<static-safety-source
id="GoogleAdsIdentity"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
<dynamic-safety-source
id="AndroidHealthConnect"
profile="primary_profile_only"
packageName="com.google.android.healthconnect.controller"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="false"
title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
<dynamic-safety-source
id="AndroidPrivacyAppDataSharingUpdates"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"
title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
<static-safety-source
id="AndroidPrivacyControls"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
<static-safety-source
id="GoogleActivityControls"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidNotificationListener"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidBackgroundLocation"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidPermissionAutoRevoke"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="AndroidAdvancedSources"
title="@com.google.android.safetycenter.resources:string/google_advanced_title">
<dynamic-safety-source
id="AndroidWorkPolicyInfo"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
<static-safety-source
id="AndroidMoreSettings"
profile="primary_profile_only"
intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
</safety-sources-group>
</safety-sources-config>
</safety-center-config>
自訂安全中心來源
安全中心來源類型
資料來源可以是動態、問題單純或靜態,視資料類型而定 提供給安全中心的資訊
動態來源
如果安全來源可提供動態資料,請將該安全來源標示為 dynamic-safety-source
存取及可能出現的警告資訊卡:
<dynamic-safety-source
id="AndroidLockScreen"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
initialDisplayState="disabled"
maxSeverityLevel="300"
refreshOnPageOpenAllowed="true"/>
僅限問題的來源
將來源標示為 issue-only-safety-source
(如果有的話)沒有相關聯的設定
項目,但仍會顯示警告您只能提供警告;提供
設定項目會導致錯誤:
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
靜態來源
如果來源是沒有重新導向的重新導向項目,請將來源標示為 static-safety-source
動態資料:
<static-safety-source
id="AndroidAdvancedSecurity"
profile="primary_profile_only"
intentAction="com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_advanced_security_title"
summary="@com.google.android.safetycenter.resources:string/google_advanced_security_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_security_search_terms"/>
安全中心來源設定
視安全中心的來源類型和其他非變數而定 檔案欄位為選填、必填或禁止使用,且可以自訂:
id
- 安全來源的專屬 ID,在整段物件中不得重複 檔案,並且只能包含英數字元 (a-z、A-Z) 和 區分大小寫
- 字串類型
- 所有安全來源類型均須具備
packageName
- 擁有此安全來源的套件名稱,例如
com.google.android.permissioncontroller
- 字串類型
- 必須用於動態和僅發生問題的安全來源
- 禁止在 Android 中使用靜態安全來源
13;在 Android 14 中
您可以選擇設為指定來源的
intentAction
更明確,而不是暗示默示 (請參閱意圖解析 說明文件 )
- 擁有此安全來源的套件名稱,例如
initialDisplayState
- 安全機制未提供資料時,UI 項目的顯示方式 來源
- 以字串表示的列舉類型,必須是下列其中一個類型:
enabled
(預設,正常顯示)disabled
(顯示為灰色,無法點選)hidden
(未顯示)
- 對動態安全來源選用 (預設為
enabled
) - 禁止用於僅有問題的靜態安全來源
profile
- 這個安全來源是否會與使用者的受管理設定檔互動
- 以字串表示的列舉類型,必須是下列其中一個類型:
primary_profile_only
(僅與設定檔的上層互動)all_profiles
(也能與受管理的設定檔互動)
- 在
all_profiles
上,系統會針對設定檔產生多個 UI 項目 父項和每個受管理的設定檔安全性來源提供的功能 每個設定檔的資料 - 必須適用於所有安全來源
searchTerms
- 使用時對應至安全中心項目的搜尋字詞清單 在「設定」應用程式中進行搜尋
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_search_terms
- 對動態和靜態安全來源選用 (預設為不提供搜尋) 條款)
- 禁止用於僅有問題的安全來源
title
- UI 項目的預設標題,在沒有動態提供資料時使用 依來源
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_title
- 動態和靜態安全來源需要 (除非)
initialDisplayState="hidden"
,沒有searchTerms
) - 禁止用於僅有問題的安全來源
titleForWork
- 所用受管理設定檔的 UI 項目預設標題 資料來源並非由來源動態提供
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_title_for_work
- 動態和靜態安全來源必須設為必填
profile="all_profiles"
(除非initialDisplayState="hidden"
為無searchTerms
) - 禁止只用於有問題的安全來源或含有
profile="primary_profile_only"
summary
- UI 項目的預設摘要 (這是較長的文字說明) 會顯示於標題下方);如果不是由 來源
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_summary
- 對靜態安全性來源的選用 (預設為不顯示摘要)
- 必須啟用動態安全來源才能使用 (除非
initialDisplayState
為hidden
) - 禁止用於僅有問題的安全來源
intentAction
- 使用者點選 UI 項目時觸發的動作
- 字串類型,例如
com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS
,或 資源 ID 以完整的資源名稱表示,例如@package:string/my_intent_action
- 如果指定的
packageName
無法解析這項意圖動作 (如果 任何情況下,UI 項目的行為與initialDisplayState="disabled"
- 對靜態安全來源和
dynamic
個安全來源需要 擁有initialDisplayState="enabled"
- 禁止用於僅有問題的安全來源
maxSeverityLevel
- 這個安全中心來源可提供的最高嚴重性等級
- 以字串表示的整數,例如
300
- 對動態和僅出現問題的安全來源而言,此為選用項目 (預設為否) 上限)
- 禁止使用靜態安全來源
loggingAllowed
- 安全中心是否要記錄與這類產品相關的互動或資料 來源
- 以字串表示的布林值,例如
false
- 針對動態和僅出現問題的安全來源,選用 (預設值為
true
) - 禁止使用靜態安全來源
refreshOnPageOpenAllowed
- 是否要將信號傳送給安全來源,藉此重新整理資料 安全中心畫面開啟時
- 以字串表示的布林值,例如
true
- 針對動態和僅出現問題的安全來源,選用 (預設值為
false
) - 禁止使用靜態安全來源
notificationsAllowed
(適用於 Android 14)- 安全來源是否可在出現以下情況時發出通知: 回報問題
- 以字串表示的布林值,例如
true
- 針對動態和僅出現問題的安全來源,選用 (預設值為
false
) - 禁止使用靜態安全來源
deduplicationGroup
(適用於 Android 14)- 可能的專屬 ID,可用來刪除重複問題 來自不同來源的內容相同簡化中的來源 群組可以傳送具有選擇性簡化 ID 的問題。與 相同的簡化 ID 只會在使用者介面中出現一次, 有很多來源會傳送這些資訊
- 字串類型
- 對動態和僅出現問題的安全來源而言,此為選用項目 (預設為否) 簡化)
- 禁止使用靜態安全來源
packageCertificateHashes
(適用於 Android 14)- 指定項目的憑證雜湊清單 (以半形逗號分隔)
packageName
。如果設定此屬性,系統會憑證 查看 將會對指定的packageCertificateHashes
執行packageName
安全目的。 - 字串類型
- 對動態和僅出現問題的安全來源而言,此為選用項目 (預設為否) 憑證檢查)
- 禁止使用靜態安全來源
- 指定項目的憑證雜湊清單 (以半形逗號分隔)
自訂安全中心來源群組
安全中心來源群組必須隸屬於安全中心來源群組。 每個來源群組在 UI 中都會按照來源群組的順序顯示 列在檔案中。每個來源都會按照順序顯示在群組內 來源會列在檔案中。如果群組含有單一安全來源 會顯示為單一項目,而非群組。
安全中心來源群組設定
使用下列變數自訂安全中心來源群組:
id
- 安全性來源群組的專屬 ID。不得重複 整個檔案
- 字串類型
- 必填
title
- UI 中的群組標題
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_title
- 如果其中至少有一個動態或靜態安全來源,這就是必要欄位
群組 (例如,該群組不屬於
type="hidden"
)
summary
- 群組在 UI 中的簡短說明,顯示在標題下方。 在特定情況下顯示 (通常在未提供資料的情況下); 否則系統會根據
- 資源 ID 以完整的資源名稱表示,例如
@package:string/my_summary
- 選用 (預設為不顯示摘要)
statelessIconType
- 如未提供任何狀態,系統會顯示群組的圖示類型 安全來源,例如:靜態項目
- 以字串表示的列舉類型,必須是
none
或privacy
(隱私權圖示類型) - 選用 (預設為
none
)
type
(適用於 Android 14)- 明確的類型,用於判斷這個群組如何與安全中心互動
- 以字串表示的列舉類型,必須是下列其中一個類型:
stateful
(負責顯示資訊並對整體安全中心的貢獻) 狀態)stateless
(螢幕不會提升整體安全) 中心狀態)hidden
(未顯示,所有來源都必須是問題來源)
- 選用,根據預設,系統會使用
以及
summary
和statelessIconType
群組。如果 為確保系統會強制執行type
的指定其他變化版本,確保 與群組中擷取的來源相符 (例如 如果群組包含使用者可看見的項目,則不得為hidden
)
安全中心來源群組類型
安全中心來源群組可歸類為「有狀態」、「無狀態」或「隱藏」 根據特定欄位的狀態預測作業
有狀態群組
群組含有標題和摘要,或者 stateLessIconType="privacy"
有狀態是影響整體安全中心狀態的因素:
<safety-sources-group
id="GoogleAppSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
<dynamic-safety-source
id="GooglePlayProtect"
packageName="com.android.vending"
profile="all_profiles"
intentAction="com.google.android.finsky.PLAY_PROTECT"
title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GoogleAppProtectionService"
packageName="com.google.android.odad"
profile="primary_profile_only"
initialDisplayState="hidden"
loggingAllowed="false"/>
</safety-sources-group>
在 Android 13 中,這類群組會顯示為可收合 項目。在 Android 14 中,應用程式會顯示為 狀態的項目,以便重新導向至子網頁。
無狀態群組
沒有摘要的群組,stateLessIconType="none"
不會影響安全中心的整體狀態:
<safety-sources-group
id="AndroidPrivacySources"
title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
statelessIconType="privacy">
<static-safety-source
id="AndroidPermissionUsage"
profile="primary_profile_only"
intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
<static-safety-source
id="AndroidPermissionManager"
profile="primary_profile_only"
intentAction="android.intent.action.MANAGE_PERMISSIONS"
title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
<static-safety-source
id="AndroidPrivacyControls"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidNotificationListener"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidBackgroundLocation"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidPermissionAutoRevoke"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
這類群組在使用者 UI 中會顯示為嚴格的項目清單。
隱藏的群組
隱藏的群組只包含有問題的安全來源,沒有標題。 隱藏的群組不會顯示在使用者介面中:
<safety-sources-group
id="HiddenGroup">
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
靜態項目的動態資料
您可以把動態安全中心來源顯示為靜態項目, 根據某些條件推送重新導向項目,並允許自訂 播放內容在無狀態群組中定義動態來源, 視工作政策資訊項目而定。
這個範例顯示不提供安全訊號的動態安全來源。 原因是該群組在無狀態的群組:
<safety-sources-group
id="AndroidAdvancedSources"
title="@com.google.android.safetycenter.resources:string/google_advanced_title">
<dynamic-safety-source
id="AndroidWorkPolicyInfo"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
<!-- … -->
</safety-sources-group>
在此範例中,來源只能推送綠色警示資訊卡,並提供 未指定狀態如要提供其他資料,來源必須落在 或「有狀態」群組
自訂字串和疊加層欄位
針對未設定接收 Mainline 更新的 GMS 裝置, 疊加整個設定檔,就能將六個字串資源重疊到 滿足所有自訂需求系統會列出疊加的字串資源
字串資源 | 說明 |
---|---|
google_lock_screen_sources_summary |
疊加這個值來定義
含有 AndroidLockScreenSources 群組的所有來源
群組處於良好狀態 (資訊或未指定嚴重性)
層級)。根據預設,安全中心會顯示所有來源的標題
合併為群組摘要 |
google_biometrics_title |
疊加這個值,定義生物特徵辨識來源的靜態標題
擁有的 com.android.settings 套件所擁有
動態資料是由來源提供。並覆蓋此物件
重疊顯示來自
com.android.settings 套件。根據預設,系統會忽略這個屬性
因為來源的初始顯示狀態
hidden 。 |
google_biometrics_summary |
疊加這個值,定義生物特徵辨識的靜態摘要
使用 com.android.settings 套件擁有的來源
表示來源未提供任何動態資料。這個函式會忽略
因為來源的初始顯示狀態是
hidden 。 |
google_biometrics_search_terms |
疊加這個值,定義生物特徵辨識的搜尋字詞清單
為 com.android.settings 套件擁有的來源。 |
google_biometrics_initial_display_state |
疊加這個值,以顯示擁有的生物特徵辨識來源的 UI 項目
在沒有動態資料的情況下,com.android.settings 套件
由來源提供。預設值為
hidden 。 |
google_security_updates_intent |
疊加這個值以變更開啟活動所需的意圖
可讓使用者查看及安裝安全性更新。這個
意圖動作必須與已匯出的活動建立關聯。
預設值為
android.settings.SYSTEM_UPDATE_SETTINGS 。 |
com.google.android.safetycenter.resources
套件中沒有其他字串
可重疊。
如果是 Android 開放原始碼計畫裝置,com.android.safetycenter.resources
中的所有資源
套件可重疊顯示,對內容沒有限制。
針對未設定接收 Mainline 更新的 GMS 裝置,請建立
正在取代或重疊 com.google.android.safetycenter.resources
套件
com.android.safetycenter.resources
用來定義
GTS 測試。
這些字串包括:
google_app_security_sources_title
google_app_security_sources_summary
google_play_protect_title
google_play_protect_title_for_work
google_play_protect_summary
google_play_protect_search_terms
google_lock_screen_sources_title
google_lock_screen_sources_summary
google_lock_screen_title
google_lock_screen_summary
google_lock_screen_search_terms
google_biometrics_title
google_biometrics_summary
google_biometrics_search_terms
google_biometrics_initial_display_state
google_accounts_sources_title
google_accounts_sources_summary
google_security_checkup_title
google_security_checkup_title_for_work
google_security_checkup_summary
google_security_checkup_search_terms
google_device_finder_sources_title
google_device_finder_sources_summary
google_find_my_device_title
google_find_my_device_summary
google_find_my_device_search_terms
google_updates_title
google_updates_summary
google_security_updates_title
google_security_updates_summary
google_security_updates_search_terms
google_security_updates_intent
google_play_system_update_title
google_play_system_update_summary
google_play_system_update_search_terms
google_privacy_sources_title
google_privacy_sources_summary
google_permission_usage_title
google_permission_usage_summary
google_permission_usage_search_terms
google_permission_manager_title
google_permission_manager_summary
google_permission_manager_search_terms
google_privacy_controls_title
google_privacy_controls_summary
google_privacy_controls_search_terms
google_advanced_title
google_advanced_security_title
google_advanced_security_summary
google_advanced_security_search_terms
google_advanced_privacy_title
google_advanced_privacy_summary
google_advanced_privacy_search_terms
自訂規定
檔案格式規定
設定檔必須是 XML 檔案,並採用
更新設定檔。這個檔案必須位於
raw
資料夾。必須符合「自訂安全中心」一節中所述的不變數
來源
自訂安全中心來源
群組。如果
未正確建立符合上述規定的設定檔
功能會完全停用CTS 和 GTS 也會剖析這個檔案
測試可提供額外資訊,以因應檔案格式不良的情況 (
最高
logcat
裝置記錄)。
Google 服務裝置
在 GMS 裝置上,這個檔案設有某些限制。支援這項服務的 GTS 測試。
Android 開放原始碼計畫裝置
在 Android 開放原始碼計畫裝置上,設定檔格式必須正確無誤,並通過 CTS 安全測試 中央。測試可驗證檔案格式是否正確。GMS 裝置也必須 通過這些測試