Habilita o inhabilita Safety Center
Para habilitar o inhabilitar Safety Center, usa el campo booleano config_enableSafetyCenter
superponible en el archivo frameworks/base/core/res/res/values/config.xml
.
En la mayoría de los dispositivos, Safety Center es compatible de forma predeterminada, por ejemplo, en teléfonos y tablets. En algunos factores de forma, Safety Center está inhabilitado de forma predeterminada, por ejemplo, en Auto, TV y 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>
Para admitir el Centro de seguridad, establece config_enableSafetyCenter
en true
. Si
no quieres admitir Safety Center, establece este valor en false
para inhabilitarlo.
Cuando el Centro de seguridad está inhabilitado, cualquier intento de redireccionar a la página Seguridad y privacidad abre la app de Configuración. Cualquier intento de interactuar con las APIs se ignora de forma silenciosa o muestra un valor predeterminado. La tarjeta de Configuración rápida y la entrada de Configuración asociadas también se muestran o se ocultan según si Safety Center está habilitado.
Marca de DeviceConfig
Además de habilitar Safety Center con la configuración de config_enableSafetyCenter
, se usa una marca DeviceConfig
(safety_center_is_enabled
) para habilitar o inhabilitar Safety Center de forma remota.
En Android 14 y versiones posteriores, no es necesario realizar ninguna otra acción, ya que esta marca es true
de forma predeterminada.
En Android 13, el Centro de seguridad está inhabilitado de forma predeterminada del servidor y se habilita mediante la lista de entidades permitidas con esta marca. Envía las huellas digitales de tu dispositivo y comunícate con tu TAM para que te agregue a la lista de entidades permitidas. Ten en cuenta que
se debe agregar la versión principal M-2022-11
o una posterior a la lista de entidades permitidas.
Para el desarrollo y las pruebas locales, la marca se puede habilitar o inhabilitar de forma local (hasta que se reinicie) con un comando adb
. Por ejemplo, para habilitar la marca, haz lo siguiente:
adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true
Para confirmar si el Centro de seguridad está habilitado, haz lo siguiente:
adb root
adb shell cmd safety_center enabled
El resultado mostrará si el Centro de seguridad está habilitado correctamente en el dispositivo.
Actualiza el archivo de configuración
Usa el archivo de configuración safety_center_config.xml
para modificar el contenido de la pantalla del Centro de seguridad. Puedes superponer este archivo, siempre y cuando cumplas con los Requisitos de personalización.
Superpón el archivo de configuración
Para superponer el archivo safety_center_config.xml
, consulta Cómo cambiar el valor de los recursos de una app en el tiempo de ejecución para obtener información sobre cómo modificar las superposiciones de recursos del entorno de ejecución (RRO).
En Android 14, asegúrate de superponer el archivo res/raw-v34/safety_center_config.xml
y no el res/raw/safety_center_config.xml
, ya que el primero tiene prioridad (esto también se aplica a otros archivos cuyo alcance es v34
, p.ej., res/values-v34/strings.xml
). El paquete de superposición debe tener un SDK mínimo inferior a 34
; de lo contrario, el calificador v34
podría quitarse durante la optimización.
Además, asegúrate de usar una superposición estática, ya que este valor se carga durante el inicio.
Para dispositivos del Proyecto de código abierto de Android (AOSP), orienta el paquete com.android.safetycenter.resources
. No hay una configuración de superposición para segmentar. Todos los recursos se pueden superponer sin restricciones en cuanto al contenido.
En el caso de los dispositivos con GMS que están configurados para recibir actualizaciones de Mainline, segmenta el paquete com.google.android.safetycenter.resources
. Orienta la configuración SafetyCenterConfig
. Esta configuración requiere que el paquete de superposiciones esté en la partición product
, system
o vendor
. Los OEMs de GMS deben copiar el archivo safety_center_config.xml
que proporciona Google y limitar las modificaciones a las que permiten las pruebas de GTS. La definición de superposición debería ser similar a la siguiente:
<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>
En el caso de los dispositivos con GMS que no están configurados para recibir actualizaciones de Mainline, segmenta el paquete com.android.safetycenter.resources
. No hay una configuración de superposición
para orientar. El paquete de superposición debe usar el nombre de paquete com.google.android.safetycenter.resources
.
Los OEMs de GMS deben copiar el archivo safety_center_config.xml
proporcionado por Google y limitar las modificaciones a las que permiten las pruebas de GTS. Los OEM de GMS también deben definir las cadenas que se usan en la configuración XML.
Estructura de archivos
En términos generales, el archivo safety_center_config.xml
es una lista de fuentes de seguridad. Estas fuentes de seguridad se organizan en grupos para administrar los indicadores en la pantalla del Centro de seguridad, por ejemplo, la seguridad de las apps o el bloqueo de pantalla. El orden de esta lista define el orden de visualización:
<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>
Archivo de configuración de Google
El archivo de configuración de AOSP se encuentra en packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml
.
En Android 13, el archivo de configuración de Google es el siguiente:
<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>
En Android 14, el archivo de configuración de Google es el siguiente:
<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>
En Android 15, el archivo de configuración de Google es el siguiente:
<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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_private_profile"
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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_private_profile"
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"/>
<dynamic-safety-source
id="GoogleAutoLock"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
maxSeverityLevel="0"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"/>
</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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_private_profile"
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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_private_profile"
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="AndroidCellularNetworkSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_cellular_network_security_title"
summary="@com.google.android.safetycenter.resources:string/google_cellular_network_security_summary">
<dynamic-safety-source
id="AndroidCellularNetworkSecurity"
packageName="com.android.phone"
profile="primary_profile_only"
notificationsAllowed="true"
initialDisplayState="hidden"/>
</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">
<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="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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_private_profile"
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"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_private_profile"
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="AndroidPrivacySourcesAdditional"
title="@com.google.android.safetycenter.resources:string/google_privacy_additional_title">
<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"/>
<dynamic-safety-source
id="AndroidPrivateSpace"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_private_space_title"
summary="@com.google.android.safetycenter.resources:string/google_private_space_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_private_space_search_terms"
initialDisplayState="hidden"
maxSeverityLevel="0"/>
</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>
Personaliza las fuentes del Centro de seguridad
Tipos de fuentes del Centro de seguridad
Las fuentes pueden ser dinámicas, estáticas o únicamente sobre problemas según el tipo de datos que proporcionan al Centro de seguridad.
Fuentes dinámicas
Marca la fuente de seguridad como dynamic-safety-source
si puede proporcionar datos dinámicos al Centro de seguridad para su entrada y las posibles tarjetas de advertencia:
<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"/>
Fuentes solo de problemas
Marca la fuente como issue-only-safety-source
si no hay ninguna entrada de configuración asociada, pero aún se proporcionan advertencias. Solo puedes proporcionar advertencias. Si proporcionas una entrada de configuración, se produce un error:
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
Fuentes estáticas
Marca la fuente como static-safety-source
si es una entrada de redireccionamiento sin datos dinámicos:
<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"/>
Configuración de la fuente del Centro de seguridad
Según el tipo de fuente del Centro de seguridad y otras variantes, los campos del archivo de configuración son opcionales, obligatorios o prohibidos, y se pueden personalizar:
id
- Es el identificador único de la fuente de seguridad, debe ser único en todo el archivo, debe estar compuesto solo por caracteres alfabéticos (a-z, A-Z) y distingue mayúsculas de minúsculas.
- Tipo de cadena
- Obligatorio para todos los tipos de fuentes de seguridad
packageName
- Es el nombre del paquete al que pertenece esta fuente de seguridad, por ejemplo,
com.google.android.permissioncontroller
. - Tipo de cadena
- Obligatorio para fuentes de seguridad dinámicas y solo de problemas
- Está prohibido para las fuentes de seguridad estáticas en Android 13. En Android 14, se puede configurar de manera opcional para que se oriente a la
intentAction
de la fuente de forma explícita en lugar de implícita (consulta la documentación de resolución de intents para obtener más detalles).
- Es el nombre del paquete al que pertenece esta fuente de seguridad, por ejemplo,
initialDisplayState
- Cómo se muestra la entrada de la IU cuando la fuente de seguridad no proporciona datos
- El tipo de enumeración representado como una cadena, debe ser una de las siguientes opciones:
enabled
(predeterminado, se muestra de forma normal)disabled
(aparece en gris y no es posible hacer clic en ella)hidden
(no se muestra)
- Opcional para las fuentes de seguridad dinámicas (el valor predeterminado es
enabled
) - Prohibido para fuentes de seguridad estáticas y que solo incluyan problemas
profile
- Si esta fuente de seguridad interactúa con el perfil administrado del usuario
- El tipo de enumeración representado como una cadena debe ser uno de los siguientes:
primary_profile_only
(solo interactúa con el perfil superior)all_profiles
(también puede interactuar con los perfiles administrados y, a partir de Android 15, con el perfil privado)
- En
all_profiles
, se generan varias entradas de IU (una para el perfil superior y una para cada perfil administrado). La fuente de seguridad puede proporcionar datos diferentes para cada perfil. - Obligatorio para todas las fuentes de seguridad
searchTerms
- Es la lista de términos de búsqueda que se asignan a la entrada del Centro de seguridad cuando se usa la búsqueda en la app de Configuración.
- ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_search_terms
- Opcional para las fuentes de seguridad dinámicas y estáticas (el valor predeterminado es ningún término de búsqueda)
- Prohibido para fuentes de seguridad de solo problemas
title
- Título predeterminado de la entrada de la IU, que se usa cuando la fuente no proporciona datos de forma dinámica.
- Es el ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_title
. - Obligatorio para las fuentes de seguridad dinámicas y estáticas (a menos que
initialDisplayState="hidden"
sinsearchTerms
) - Prohibido para fuentes de seguridad de solo problemas
titleForWork
- Título predeterminado de la entrada de la IU para el perfil administrado que se usa cuando la fuente no proporciona datos de forma dinámica
- ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_title_for_work
- Obligatorio para las fuentes de seguridad dinámicas y estáticas que hayan especificado
profile="all_profiles"
(a menos que seainitialDisplayState="hidden"
sinsearchTerms
). - Prohibido para fuentes de seguridad o fuentes de seguridad exclusivas del problema con
profile="primary_profile_only"
summary
- Es el resumen predeterminado de la entrada de la IU (es una descripción de texto más larga que se muestra debajo del título) que se usa cuando la fuente no proporciona datos de forma dinámica.
- Es el ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_summary
. - Es opcional para las fuentes de seguridad estáticas (la opción predeterminada es no incluir un resumen).
- Obligatorio para las fuentes de seguridad dinámicas (a menos que
initialDisplayState
seahidden
) - Prohibido para fuentes de seguridad que son solo para asuntos de seguridad
intentAction
- Acción que se activará cuando se haga clic en la entrada de la IU
- Tipo de cadena, por ejemplo,
com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS
, o ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,@package:string/my_intent_action
- Si esta acción de intent no se resuelve para el
packageName
determinado (si hay alguno), la entrada de la IU se comporta de la misma manera que si tuvierainitialDisplayState="disabled"
. - Se requiere para las fuentes de seguridad estáticas y las fuentes de seguridad
dynamic
que tenganinitialDisplayState="enabled"
. - Prohibido para fuentes de seguridad que son solo para asuntos de seguridad
maxSeverityLevel
- Es el nivel de severidad máximo que puede proporcionar esta fuente de Safety Center.
- Número entero representado como una string, por ejemplo,
300
- Opcional para las fuentes de seguridad dinámicas y solo de problemas (el valor predeterminado no es el máximo).
- Prohibido para fuentes de seguridad estáticas
loggingAllowed
- Si el Centro de seguridad puede registrar interacciones o datos relacionados con esta fuente
- Es un valor booleano representado como una cadena, por ejemplo,
false
. - Es opcional para las fuentes de seguridad dinámicas y solo de problemas (el valor predeterminado es
true
). - Prohibido para fuentes de seguridad estáticas
refreshOnPageOpenAllowed
- Indica si se debe enviar un indicador a la fuente de seguridad para actualizar sus datos cuando se abre la pantalla de Safety Center
- Booleano representado como una string, por ejemplo,
true
- Es opcional para las fuentes de seguridad dinámicas y solo de problemas (el valor predeterminado es
false
). - Prohibido para fuentes de seguridad estáticas
notificationsAllowed
(a partir de Android 14)- Si la fuente de seguridad puede proporcionar una notificación de forma opcional cuando se informa un problema
- Es un valor booleano representado como una cadena, por ejemplo,
true
. - Es opcional para las fuentes de seguridad dinámicas y solo de problemas (el valor predeterminado es
false
). - Prohibido para fuentes de seguridad estáticas
deduplicationGroup
(A partir de Android 14)- Un posible identificador único que se puede usar para anular los problemas duplicados que provienen de diferentes fuentes. Las fuentes dentro del mismo grupo de anulación de duplicación pueden enviar problemas con un ID de anulación de duplicación opcional. Los problemas con el mismo ID de anulación de duplicación solo se mostrarán una vez en la IU, incluso si varias fuentes los envían.
- Tipo de cadena
- Opcional para las fuentes de seguridad dinámicas y solo de problemas (la configuración predeterminada es sin anulación de duplicación)
- Prohibido para fuentes de seguridad estáticas
packageCertificateHashes
(a partir de Android 14)- Una lista separada por comas de hashes de certificados para el
packageName
determinado. Si se establece, se realizará una verificación de certificado en elpackageCertificateHashes
determinado para elpackageName
determinado cuando se interactúe con la fuente de seguridad, por motivos de seguridad. - Tipo de cadena
- Opcional para las fuentes de seguridad dinámicas y que solo brindan problemas (el valor predeterminado es sin verificaciones de certificados)
- Prohibido para fuentes de seguridad estáticas
- Una lista separada por comas de hashes de certificados para el
titleForPrivateProfile
(a partir de Android 15)- Es el título predeterminado de la entrada de la IU del perfil privado que se usa cuando la fuente no proporciona datos de forma dinámica.
- ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_title_for_private_profile
- Obligatorio para las fuentes de seguridad dinámicas y estáticas que especificaron
profile="all_profiles"
(a menos que seainitialDisplayState="hidden"
sinsearchTerms
). - Prohibido para fuentes de seguridad solo de problemas o fuentes con
profile="primary_profile_only"
Personaliza los grupos de fuentes del Centro de seguridad
Las fuentes de Safety Center deben estar contenidas en un grupo de fuentes de Safety Center. Cada grupo de fuentes se muestra en la IU en el orden en que se enumeran en el archivo. Cada fuente se muestra dentro del grupo en el orden en que se enumeran las fuentes en el archivo. Si el grupo contiene una sola fuente de seguridad, se muestra como una sola entrada en lugar de un grupo.
Configuración del grupo de fuentes del Centro de seguridad
Usa las siguientes variables para personalizar los grupos de fuentes del Centro de seguridad:
id
- Es el identificador único del grupo de fuentes de seguridad. Debe ser único en todo el archivo.
- Tipo de cadena
- Obligatorio
title
- Título del grupo en la IU
- ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_title
- Obligatorio si hay al menos una fuente de seguridad dinámica o estática dentro del grupo (es decir, el grupo no es de
type="hidden"
).
summary
- Breve descripción del grupo en la IU, que se muestra debajo del título. Se muestran en condiciones específicas, por lo general, cuando no se proporcionan datos. De lo contrario, el resumen se calcula en función de los datos que proporcionan las fuentes del grupo.
- ID de recurso representado como un nombre de recurso completamente calificado, por ejemplo,
@package:string/my_summary
- Opcional (la configuración predeterminada no es resumen)
statelessIconType
- Tipo de ícono que se muestra para el grupo cuando las fuentes de seguridad no proporcionan un estado (por ejemplo, entradas estáticas)
- Es un tipo de enumeración representado como una cadena que debe ser
none
oprivacy
(el tipo de ícono de privacidad). - Opcional (el valor predeterminado es
none
)
type
(a partir de Android 14)- Es un tipo explícito para calificar cómo interactúa este grupo con Safety Center.
- El tipo de enumeración representado como una cadena, debe ser una de las siguientes opciones:
stateful
(muestra y contribuye al estado general del Centro de seguridad)stateless
(muestra y no contribuye al estado general del Centro de seguridad)hidden
(no se muestra, todas las fuentes deben ser solo de problemas)
- Opcional, inferido de forma predeterminada mediante el uso de las fuentes de seguridad contenidas en el grupo, así como
summary
ystatelessIconType
Si se especificatype
, se aplican algunas invariantes adicionales para garantizar que coincida con las fuentes que se encuentran en el grupo (por ejemplo, el grupo no puede serhidden
si contiene entradas visibles para el usuario).
Tipos de grupos de fuentes del Centro de seguridad
Los grupos de origen del Centro de seguridad se clasifican como ocultos, con estado o sin estado en función del estado de ciertos campos.
Grupo con estado
Un grupo que tiene un título y un resumen, o stateLessIconType="privacy"
, se considera con estado y contribuye al estado general del Centro de seguridad:
<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>
En Android 13, ese grupo se mostrará como entrada contraíble en la IU. En Android 14, se mostrará como una entrada con su propio estado que redirecciona a la subpágina.
Grupo sin estado
Un grupo que tiene un título, pero no un resumen, y stateLessIconType="none"
se considera sin estado y no contribuye al estado general del Centro de seguridad:
<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>
Este tipo de grupo se mostrará como una lista rígida de entradas en la IU.
Grupo oculto
Un grupo oculto solo contiene fuentes de seguridad de problemas y no tiene un título. Los grupos ocultos no aparecen en la IU:
<safety-sources-group
id="HiddenGroup">
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
Datos dinámicos para una entrada estática
Puedes mostrar la fuente dinámica de Safety Center como una entrada estática, lo que permite enviar entradas de redireccionamiento según algunas condiciones y personalizar su contenido durante el tiempo de ejecución. Define la fuente dinámica dentro de un grupo sin estado, por ejemplo, según la entrada de información de tu política de trabajo.
En este ejemplo, se muestra una fuente de seguridad dinámica que no proporciona un indicador de seguridad porque está en un grupo sin estado:
<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>
En este ejemplo, la fuente solo puede enviar tarjetas de advertencia verdes y proporcionar un estado no especificado. Para poder proporcionar otros datos, la fuente debe estar dentro de un grupo con estado.
Personaliza cadenas y campos superpuestos
En el caso de los dispositivos GMS que no están configurados para recibir actualizaciones de Mainline, en lugar de superponer todo el archivo de configuración, puedes superponer seis recursos de cadena para satisfacer todas las necesidades de personalización. Los recursos de cadena que se superponen se enumeran en la tabla.
Recurso de cadenas | Descripción |
---|---|
google_lock_screen_sources_summary |
Superpone este valor para definir un resumen estático que se muestra para el grupo AndroidLockScreenSources cuando todas las fuentes del grupo están en buen estado (nivel de información o gravedad no especificada). De forma predeterminada, el Centro de seguridad muestra el título de todas las fuentes
del grupo concatenado como resumen del grupo. |
google_biometrics_title |
Superpone este valor para definir un título estático para la fuente biométrica que pertenece al paquete com.android.settings que se usa cuando la fuente no proporciona datos dinámicos. Superpón esto cuando también superpongas el título que proporciona la fuente de forma dinámica en el paquete com.android.settings . Esto se ignora de forma predeterminada porque el estado de visualización inicial de la fuente es hidden . |
google_biometrics_summary |
Superpone este valor para definir un resumen estático de la fuente de datos biométricos que pertenece al paquete com.android.settings que se usa cuando la fuente no proporciona datos dinámicos. Esto se ignora de forma predeterminada porque el estado de visualización inicial de la fuente es hidden . |
google_biometrics_search_terms |
Superpone este valor para definir una lista de términos de búsqueda para la fuente biométrica que pertenece al paquete com.android.settings . |
google_biometrics_initial_display_state |
Superpone este valor para mostrar una entrada de la IU para la fuente biométrica que es propiedad del paquete com.android.settings cuando la fuente no proporciona datos dinámicos. El valor predeterminado es hidden . |
google_security_updates_intent |
Superpone este valor para cambiar el intent necesario para abrir la actividad que le permite al usuario verificar e instalar actualizaciones de seguridad. Esta acción de intent debe estar asociada con una actividad exportada. El valor predeterminado es android.settings.SYSTEM_UPDATE_SETTINGS . |
No se pueden superponer ninguna otra cadena del paquete com.google.android.safetycenter.resources
.
Para dispositivos del AOSP, todos los recursos del paquete com.android.safetycenter.resources
se pueden superponer sin restricciones de contenido.
Para los dispositivos GMS que no están configurados para recibir actualizaciones de Mainline, crea un paquete com.google.android.safetycenter.resources
que reemplace o superponga com.android.safetycenter.resources
y defina todas las cadenas que esperan las pruebas de GTS.
Estas cadenas son las siguientes:
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
Requisitos de personalización
Requisitos de formato de archivo
El archivo de configuración debe ser un archivo XML y debe seguir el formato que se describe en Actualiza el archivo de configuración. El archivo debe estar en la carpeta raw
. Debe cumplir con las variantes que se describen en Personaliza las fuentes del Centro de seguridad y Personaliza los grupos de fuentes del Centro de seguridad. Si el archivo de configuración no tiene el formato correcto de acuerdo con los requisitos anteriores, la función se inhabilita por completo. El análisis de este archivo también está respaldado por pruebas de CTS y GTS que pueden proporcionar contexto adicional en caso de que el archivo no tenga el formato correcto (además de los registros del dispositivo logcat).
Dispositivos de los servicios de Google
En los dispositivos con GMS, se aplican algunas restricciones a este archivo. Esto es compatible con las pruebas de GTS.
Dispositivos AOSP
En los dispositivos del AOSP, el archivo de configuración debe tener el formato correcto y aprobar las pruebas del CTS del Centro de seguridad. Las pruebas verifican que el archivo tenga el formato correcto. Los dispositivos con GMS también deben superar estas pruebas.