Personalizar el Centro de seguridad

Activar o desactivar el Centro de seguridad

Para habilitar o deshabilitar el Centro de seguridad, use el campo booleano config_enableSafetyCenter superpuesto en el archivo frameworks/base/core/res/res/values/config.xml .

En la mayoría de los dispositivos, el Centro de seguridad es compatible de forma predeterminada, por ejemplo, en teléfonos y tabletas. En algunos factores de forma, el Centro de seguridad está desactivado 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, configure config_enableSafetyCenter en true . Si no desea admitir el Centro de seguridad, establezca este valor en false para deshabilitarlo.

Cuando el Centro de seguridad está deshabilitado, cualquier intento de redirigir a la página Seguridad y privacidad abre la aplicación Configuración. Cualquier intento de interactuar con las API se ignora silenciosamente o devuelve un valor predeterminado. El mosaico de Configuración rápida asociado y la entrada de Configuración también están expuestos u ocultos dependiendo de si el Centro de seguridad está habilitado.

Bandera de configuración del dispositivo

Además de habilitar el Centro de seguridad mediante la configuración config_enableSafetyCenter , se utiliza un indicador DeviceConfig ( safety_center_is_enabled ) para habilitar o deshabilitar el Centro de seguridad 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á deshabilitado de forma predeterminada en el lado del servidor y habilitado por la lista de permitidos usando esta bandera. Envíe las huellas digitales de su dispositivo y comuníquese con su TAM para que lo agreguen a la lista de permitidos. Tenga en cuenta que es necesario agregar la versión principal M-2022-11 o superior a la lista de permitidos. Para el desarrollo y las pruebas locales, el indicador se puede habilitar o deshabilitar localmente (hasta el reinicio) con un comando adb . Por ejemplo, para habilitar la bandera:

adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true

Y para confirmar si el Centro de seguridad está habilitado:

adb root
adb shell cmd safety_center enabled

El resultado indicará si el Centro de seguridad está habilitado correctamente en el dispositivo.

Actualizar el archivo de configuración

Utilice el archivo de configuración safety_center_config.xml para modificar el contenido de la pantalla del Centro de seguridad. Puede superponer este archivo suponiendo que haya cumplido con los requisitos de personalización .

Superponer el archivo de configuración

Para superponer el archivo safety_center_config.xml , consulte Cambiar el valor de los recursos de una aplicación en tiempo de ejecución para obtener información sobre cómo modificar las superposiciones de recursos en tiempo de ejecución (RRO).

En Android 14, asegúrese de superponer el archivo res/raw-v34/safety_center_config.xml y no res/raw/safety_center_config.xml , ya que el primero tiene prioridad (esto también se aplica a otros archivos cuyo ámbito es v34 , por ejemplo 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 puede eliminarse durante la optimización. También asegúrese de utilizar una superposición estática, ya que este valor se carga en el momento del arranque.

Para dispositivos Android Open Source Project (AOSP), seleccione el paquete com.android.safetycenter.resources . No hay ninguna configuración de superposición a la que apuntar. Todos los recursos se pueden superponer sin restricciones en el contenido.

Para dispositivos GMS que están configurados para recibir actualizaciones de Mainline, oriente el paquete com.google.android.safetycenter.resources . Apunte a la configuración SafetyCenterConfig . Esta configuración requiere que el paquete de superposición esté en la partición del product , system o vendor . Los OEM de GMS deben copiar el archivo safety_center_config.xml proporcionado por Google y limitar las modificaciones a aquellas permitidas por las pruebas GTS . La definición de superposición debería ser similar a esto:

<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>

Para dispositivos GMS que no están configurados para recibir actualizaciones de Mainline, seleccione el paquete com.android.safetycenter.resources . No hay ninguna configuración de superposición a la que apuntar. El paquete superpuesto debe usar el nombre de paquete com.google.android.safetycenter.resources .

Los OEM de GMS deben copiar el archivo safety_center_config.xml proporcionado por Google y limitar las modificaciones a las permitidas por las pruebas GTS. Los OEM de GMS también deben definir las cadenas utilizadas en la configuración XML.

Estructura de archivos

En un nivel alto, el archivo safety_center_config.xml es una lista de fuentes de seguridad. Estas fuentes de seguridad están organizadas en grupos para administrar las señales en la pantalla del Centro de seguridad, por ejemplo, Seguridad de aplicaciones o 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:

<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:

<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>

Personalizar las fuentes del Centro de seguridad

Tipos de fuentes del Centro de seguridad

Las fuentes pueden ser dinámicas, de solo problemas o estáticas, según el tipo de datos que proporcionan al Centro de seguridad.

Fuentes dinámicas

Marque la fuente de seguridad como dynamic-safety-source si puede proporcionar datos dinámicos al Centro de seguridad tanto para su entrada como para tarjetas de advertencia potenciales:

<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 exclusivamente temáticas

Marque la fuente como issue-only-safety-source si no hay ninguna entrada de configuración asociada pero aún se proporcionan advertencias. Sólo puede proporcionar advertencias; proporcionar una entrada de configuración genera un error:

<issue-only-safety-source
    id="AndroidAccessibility"
    packageName="com.google.android.permissioncontroller"
    profile="all_profiles"
    refreshOnPageOpenAllowed="true"/>

Fuentes estáticas

Marque la fuente como static-safety-source si es una entrada de redirección 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 origen del Centro de seguridad

Según el tipo de fuente del Centro de seguridad y otras invariantes, los campos del archivo de configuración son opcionales, obligatorios o prohibidos y se pueden personalizar:

  • id
    • Identificador único para la fuente de seguridad, debe ser único en todo el archivo y debe estar compuesto únicamente de caracteres alfabéticos (az, AZ) y distingue entre mayúsculas y minúsculas.
    • Tipo de cadena
    • Requerido para todos los tipos de fuentes de seguridad.
  • packageName
    • Nombre del paquete propietario de esta fuente de seguridad, por ejemplo, com.google.android.permissioncontroller
    • Tipo de cadena
    • Requerido para fuentes de seguridad dinámicas y de solo problemas
    • Prohibido para fuentes de seguridad estáticas en Android 13; En Android 14, esto se puede configurar opcionalmente para apuntar a la intentAction de la fuente de forma explícita en lugar de implícitamente (consulte la documentación de resolución de intenciones para obtener más detalles).
  • initialDisplayState
    • Cómo se muestra la entrada de la interfaz de usuario cuando la fuente de seguridad no proporciona datos
    • El tipo de enumeración representado como una cadena debe ser uno de los siguientes:
      • enabled (predeterminado, se muestra normalmente)
      • disabled (se muestra atenuado, no se puede hacer clic)
      • hidden (no se muestra)
    • Opcional para fuentes de seguridad dinámicas (el valor predeterminado está enabled )
    • Prohibido para fuentes de seguridad estáticas y de emisión exclusiva
  • 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 (interactúa solo con el perfil principal)
      • all_profiles (también puede interactuar con los perfiles administrados)
    • En all_profiles , se generan varias entradas de UI (una para el perfil principal y otra para cada perfil administrado); la fuente de seguridad puede proporcionar datos diferentes para cada perfil
    • Requerido para todas las fuentes de seguridad.
  • searchTerms
    • Lista de términos de búsqueda que se asignan a la entrada del Centro de seguridad cuando se utiliza la búsqueda en la aplicación Configuración
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_search_terms
    • Opcional para fuentes de seguridad dinámicas y estáticas (el valor predeterminado no es ningún término de búsqueda)
    • Prohibido para fuentes de seguridad de emisión exclusiva
  • title
    • Título predeterminado de la entrada de la interfaz de usuario, que se utiliza cuando la fuente no proporciona datos dinámicamente
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_title
    • Requerido para fuentes de seguridad estáticas y dinámicas (a menos que initialDisplayState="hidden" sin searchTerms )
    • Prohibido para fuentes de seguridad de emisión exclusiva
  • titleForWork
    • Título predeterminado de la entrada de la interfaz de usuario para el perfil administrado que se utiliza cuando la fuente no proporciona datos dinámicamente
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_title_for_work
    • Requerido para fuentes de seguridad estáticas y dinámicas que han especificado profile="all_profiles" (a menos que initialDisplayState="hidden" sin searchTerms )
    • Prohibido para fuentes de seguridad de solo problemas o fuentes con profile="primary_profile_only"
  • summary
    • Resumen predeterminado de la entrada de la interfaz de usuario (esta es una descripción de texto más larga que se muestra debajo del título), que se utiliza cuando la fuente no proporciona datos dinámicamente
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_summary
    • Opcional para fuentes de seguridad estáticas (el valor predeterminado no es ningún resumen)
    • Requerido para fuentes de seguridad dinámicas (a menos que initialDisplayState esté hidden )
    • Prohibido para fuentes de seguridad de emisión exclusiva
  • intentAction
    • Acción que se activa cuando se hace clic en la entrada de la interfaz de usuario
    • Tipo de cadena, por ejemplo, com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS o ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_intent_action
    • Si esta acción de intención no se resuelve para el packageName dado (si corresponde), la entrada de la interfaz de usuario se comporta de la misma manera que si tuviera initialDisplayState="disabled"
    • Requerido para fuentes de seguridad estáticas y fuentes de seguridad dynamic que tienen initialDisplayState="enabled"
    • Prohibido para fuentes de seguridad de emisión exclusiva
  • maxSeverityLevel
    • Nivel de gravedad máximo que esta fuente del Centro de seguridad puede proporcionar
    • Entero representado como una cadena, por ejemplo, 300
    • Opcional para fuentes de seguridad dinámicas y de solo problemas (el valor predeterminado no es un máximo)
    • Prohibido para fuentes de seguridad estáticas
  • loggingAllowed
    • Si Safety Center puede registrar interacciones o datos relacionados con esta fuente
    • Booleano representado como una cadena, por ejemplo false
    • Opcional para fuentes de seguridad dinámicas y de solo problemas (el valor predeterminado es true )
    • Prohibido para fuentes de seguridad estáticas
  • refreshOnPageOpenAllowed
    • Si se debe enviar una señal a la fuente de seguridad para actualizar sus datos cuando se abre la pantalla del Centro de seguridad
    • Booleano representado como una cadena, por ejemplo, true
    • Opcional para fuentes de seguridad dinámicas y de solo 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 opcionalmente proporcionar una notificación al informar un problema
    • Booleano representado como una cadena, por ejemplo, true
    • Opcional para fuentes de seguridad dinámicas y de solo problemas (el valor predeterminado es false )
    • Prohibido para fuentes de seguridad estáticas
  • deduplicationGroup (a partir de Android 14)
    • Un identificador único potencial que se puede utilizar para deduplicar problemas provenientes de diferentes fuentes. Las fuentes dentro del mismo grupo de deduplicación pueden enviar problemas con una identificación de deduplicación opcional. Los problemas con la misma identificación de deduplicación solo se mostrarán una vez en la interfaz de usuario, incluso si los envían varias fuentes.
    • Tipo de cadena
    • Opcional para fuentes de seguridad dinámicas y de solo problemas (el valor predeterminado no es la deduplicación)
    • Prohibido para fuentes de seguridad estáticas
  • packageCertificateHashes (a partir de Android 14)
    • Una lista separada por comas de hash de certificado para el packageName determinado. Si se establece esto, se realizará una verificación de certificado contra el packageCertificateHashes dado para el packageName dado al interactuar con la fuente de seguridad, por motivos de seguridad.
    • Tipo de cadena
    • Opcional para fuentes de seguridad dinámicas y de solo problemas (el valor predeterminado es que no haya verificaciones de certificados)
    • Prohibido para fuentes de seguridad estáticas

Personalizar los grupos de fuentes del Centro de seguridad

Las fuentes del Centro de seguridad deben estar contenidas dentro de un grupo de fuentes del Centro de seguridad. Cada grupo de origen se muestra en la interfaz de usuario en el orden en que aparecen los grupos de origen en el archivo. Cada fuente se muestra dentro del grupo en el orden en que aparecen las fuentes en el archivo. Si el grupo contiene una única fuente de seguridad, se muestra como una entrada única en lugar de un grupo.

Configuración del grupo de fuentes del Centro de seguridad

Utilice las siguientes variables para personalizar los grupos de origen del Centro de seguridad:

  • id
    • Identificador único para el grupo de fuentes de seguridad; debe ser único en todo el archivo
    • Tipo de cadena
    • Requerido
  • title
    • Título del grupo en la UI
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_title
    • Requerido si hay al menos una fuente de seguridad estática o dinámica dentro del grupo (es decir, el grupo no es de type="hidden" )
  • summary
    • Breve descripción del grupo en la interfaz de usuario, que se muestra debajo del título. Se muestra en condiciones específicas, normalmente cuando no se proporcionan datos; de lo contrario, el resumen se calcula con base en los datos proporcionados por las fuentes dentro del grupo.
    • ID de recurso representado como un nombre de recurso completo, por ejemplo, @package:string/my_summary
    • Opcional (el valor predeterminado no es ningún resumen)
  • statelessIconType
    • Tipo de icono que se muestra para el grupo cuando las fuentes de seguridad no proporcionan ningún estado, por ejemplo, entradas estáticas
    • Tipo de enumeración representado como una cadena que debe ser none o privacy (el tipo de icono de privacidad)
    • Opcional (el valor predeterminado es none )
  • type (a partir de Android 14)
    • Un tipo explícito para calificar cómo este grupo interactúa con Safety Center
    • El tipo de enumeración representado como una cadena debe ser uno de los siguientes:
      • 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, se infiere de forma predeterminada mediante el uso de las fuentes de seguridad contenidas en el grupo, así como el summary y statelessIconType . Si se especifica el type se aplican algunas invariantes adicionales para garantizar que coincida con las fuentes encontradas en el grupo (por ejemplo, el grupo no se puede hidden 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 con estado, sin estado u ocultos, según el estado de ciertos campos.

grupo con estado

Un grupo que tiene un título y un resumen, o stateLessIconType="privacy" se considera con estado, 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, dicho grupo se mostrará como una entrada plegable en la interfaz de usuario. En Android 14, se mostrará como una entrada con su propio estado que redirige a la subpágina.

grupo apátrida

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>

Dicho grupo se mostrará como una lista rígida de entradas en la interfaz de usuario.

grupo oculto

Un grupo oculto contiene únicamente fuentes de seguridad relacionadas únicamente con problemas y no tiene título. Los grupos ocultos no aparecen en la interfaz de usuario:

<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

Puede mostrar la fuente dinámica del Centro de seguridad como una entrada estática, lo que permite enviar entradas de redirección dependiendo de algunas condiciones y permite personalizar su contenido en tiempo de ejecución. Defina la fuente dinámica dentro de un grupo sin estado, por ejemplo, según la entrada de información de su política de trabajo.

Este ejemplo muestra una fuente de seguridad dinámica que no proporciona una señal 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

Para los dispositivos GMS que no están configurados para recibir actualizaciones de Mainline, en lugar de superponer todo el archivo de configuración, puede 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 cadena Descripción
google_lock_screen_sources_summary Superponga 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 (información o nivel de gravedad no especificado). De forma predeterminada, el Centro de seguridad muestra el título de todas las fuentes del grupo concatenados como resumen del grupo.
google_biometrics_title Superponga este valor para definir un título estático para la fuente biométrica propiedad del paquete com.android.settings utilizado cuando la fuente no proporciona datos dinámicos. Superponga esto cuando también superponga el título proporcionado dinámicamente por la fuente en el paquete com.android.settings . Esto se ignora de forma predeterminada porque el estado de visualización inicial del origen está hidden .
google_biometrics_summary Superponga este valor para definir un resumen estático para la fuente biométrica propiedad del paquete com.android.settings utilizado cuando la fuente no proporciona datos dinámicos. Esto se ignora de forma predeterminada porque el estado de visualización inicial del origen está hidden .
google_biometrics_search_terms Superponga este valor para definir una lista de términos de búsqueda para la fuente biométrica propiedad del paquete com.android.settings .
google_biometrics_initial_display_state Superponga este valor para mostrar una entrada de la interfaz de usuario para la fuente biométrica propiedad del paquete com.android.settings cuando la fuente no proporciona datos dinámicos. El valor predeterminado está hidden .
google_security_updates_intent Superponga este valor para cambiar la intención necesaria para abrir la actividad que permite al usuario verificar e instalar actualizaciones de seguridad. Esta acción de intención debe estar asociada con una actividad exportada. El valor predeterminado es android.settings.SYSTEM_UPDATE_SETTINGS .

Ninguna otra cadena del paquete com.google.android.safetycenter.resources se puede superponer.

Para dispositivos AOSP, todos los recursos del paquete com.android.safetycenter.resources se pueden superponer sin restricciones en el contenido.

Para los dispositivos GMS que no están configurados para recibir actualizaciones de Mainline, cree un paquete com.google.android.safetycenter.resources que reemplace o superponga com.android.safetycenter.resources definiendo todas las cadenas esperadas por las pruebas GTS.

Estas cadenas son:

  • 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 seguir el formato descrito en Actualizar el archivo de configuración . El archivo debe estar en la carpeta raw . Debe cumplir con las invariantes descritas en Personalizar fuentes del Centro de seguridad y Personalizar grupos de fuentes del Centro de seguridad . Si el archivo de configuración no está bien formado de acuerdo con los requisitos anteriores, la función se desactiva por completo. El análisis de este archivo también está respaldado por pruebas CTS y GTS que pueden proporcionar contexto adicional en caso de que el archivo no esté bien formado (además de los registros del dispositivo logcat ).

Dispositivos de servicios de Google

En los dispositivos GMS, se imponen algunas restricciones a este archivo. Esto está respaldado por las pruebas GTS .

Dispositivos AOSP

En dispositivos AOSP, el archivo de configuración debe estar bien formado y pasar las pruebas CTS para Safety Center. Las pruebas verifican que el archivo esté bien formado. Los dispositivos GMS también deben pasar estas pruebas.