Personnaliser le centre de sécurité

Activer ou désactiver le centre de sécurité

Pour activer ou désactiver Safety Center, utilisez le champ booléen superposable config_enableSafetyCenter dans le fichier frameworks/base/core/res/res/values/config.xml .

Sur la plupart des appareils, Safety Center est pris en charge par défaut, par exemple sur les téléphones et les tablettes. Sur certains facteurs de forme, Safety Center est désactivé par défaut, par exemple sur Auto, TV et 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>

Pour prendre en charge Safety Center, définissez config_enableSafetyCenter sur true . Si vous ne souhaitez pas prendre en charge Safety Center, définissez cette valeur sur false pour le désactiver.

Lorsque le Centre de sécurité est désactivé, toute tentative de redirection vers la page Sécurité et confidentialité ouvre l'application Paramètres à la place. Toute tentative d'interaction avec les API est ignorée en silence ou renvoie une valeur par défaut. La vignette Paramètres rapides associée et l’entrée Paramètres sont également exposées ou masquées selon que Safety Center est activé ou non.

Indicateur DeviceConfig

En plus d'activer Safety Center à l'aide de la configuration config_enableSafetyCenter , un indicateur DeviceConfig ( safety_center_is_enabled ) est utilisé pour activer ou désactiver à distance Safety Center.

Sous Android 14 et versions ultérieures, aucune autre action n’est nécessaire car cet indicateur est true par défaut.

Dans Android 13, Safety Center est désactivé par défaut côté serveur et activé par liste blanche à l’aide de cet indicateur. Soumettez les empreintes digitales de votre appareil et contactez votre TAM pour être ajouté à la liste verte. Notez que la version principale M-2022-11 ou supérieure doit être ajoutée à la liste verte. Pour le développement et les tests locaux, l'indicateur peut être activé ou désactivé localement (jusqu'à un redémarrage) avec une commande adb . Par exemple, pour activer le drapeau :

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

Et pour confirmer si Safety Center est activé :

adb root
adb shell cmd safety_center enabled

La sortie indiquera si Safety Center est correctement activé sur l’appareil.

Mettre à jour le fichier de configuration

Utilisez le fichier de configuration safety_center_config.xml pour modifier le contenu de l'écran Safety Center. Vous pouvez superposer ce fichier en supposant que vous répondiez aux exigences de personnalisation .

Superposer le fichier de configuration

Pour superposer le fichier safety_center_config.xml , consultez Modifier la valeur des ressources d'une application au moment de l'exécution pour plus d'informations sur la modification des superpositions de ressources d'exécution (RRO).

Sous Android 14, assurez-vous de superposer le fichier res/raw-v34/safety_center_config.xml et non le fichier res/raw/safety_center_config.xml car le premier est prioritaire (cela s'applique également aux autres fichiers limités à v34 , par exemple res/values-v34/strings.xml ). Le package de superposition doit avoir un SDK min inférieur à 34 , sinon le qualificatif v34 risque d'être supprimé lors de l'optimisation. Assurez-vous également d'utiliser une superposition statique, car cette valeur est chargée au moment du démarrage.

Pour les appareils Android Open Source Project (AOSP), ciblez le package com.android.safetycenter.resources . Il n’y a pas de configuration de superposition à cibler. Toutes les ressources sont superposables sans aucune restriction sur le contenu.

Pour les appareils GMS configurés pour recevoir les mises à jour Mainline, ciblez le package com.google.android.safetycenter.resources . Ciblez la configuration SafetyCenterConfig . Cette configuration nécessite que le package de superposition se trouve dans la partition product , system ou vendor . Les OEM GMS doivent copier le fichier safety_center_config.xml fourni par Google et limiter les modifications à celles autorisées par les tests GTS . La définition de superposition doit être proche de ceci :

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

Pour les appareils GMS qui ne sont pas configurés pour recevoir les mises à jour Mainline, ciblez le package com.android.safetycenter.resources . Il n’y a pas de configuration de superposition à cibler. Le package de superposition doit utiliser le nom du package com.google.android.safetycenter.resources .

Les OEM GMS doivent copier le fichier safety_center_config.xml fourni par Google et limiter les modifications à celles autorisées par les tests GTS. Les OEM GMS doivent également définir les chaînes utilisées dans la configuration XML.

Structure du fichier

À un niveau élevé, le fichier safety_center_config.xml est une liste de sources de sécurité. Ces sources de sécurité sont organisées en groupes pour gérer les signaux sur l'écran Safety Center, par exemple, App Security ou Screen Lock. L'ordre de cette liste définit l'ordre d'affichage :

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

Fichier de configuration Google

Le fichier de configuration AOSP se trouve dans packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml .

Sous Android 13, le fichier de configuration de Google est :

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

Sous Android 14, le fichier de configuration de Google est :

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

Personnaliser les sources du Centre de sécurité

Types de sources du centre de sécurité

Les sources peuvent être dynamiques, relatives aux problèmes uniquement ou statiques, en fonction du type de données qu'elles fournissent au centre de sécurité.

Sources dynamiques

Marquez la source de sécurité comme dynamic-safety-source si elle peut fournir des données dynamiques au centre de sécurité à la fois pour son entrée et pour ses cartes d'avertissement potentielles :

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

Sources de problèmes uniquement

Marquez la source comme issue-only-safety-source s'il n'y a aucune entrée de paramètres associée mais que des avertissements sont toujours fournis. Vous ne pouvez fournir que des avertissements ; fournir une entrée de paramètres entraîne une erreur :

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

Sources statiques

Marquez la source comme static-safety-source s'il s'agit d'une entrée de redirection sans données dynamiques :

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

Configuration des sources du centre de sécurité

En fonction du type de source Safety Center et d'autres invariants, les champs du fichier de configuration sont facultatifs, obligatoires ou interdits et peuvent être personnalisés :

  • id
    • Identifiant unique de la source de sécurité, doit être unique dans tout le fichier et doit être composé uniquement de caractères alphabétiques (az, AZ) et est sensible à la casse.
    • Type de chaîne
    • Obligatoire pour tous les types de sources de sécurité
  • packageName
    • Nom du package propriétaire de cette source de sécurité, par exemple, com.google.android.permissioncontroller
    • Type de chaîne
    • Obligatoire pour les sources de sécurité dynamiques et à problème uniquement
    • Interdit pour les sources de sécurité statiques dans Android 13 ; dans Android 14, cela peut éventuellement être défini pour cibler l' intentAction de la source de manière explicite plutôt qu'implicite (voir la documentation sur la résolution d'intention pour plus de détails)
  • initialDisplayState
    • Comment l'entrée de l'interface utilisateur est affichée lorsqu'aucune donnée n'est fournie par la source de sécurité
    • Le type d'énumération représenté sous forme de chaîne doit être l'un des éléments suivants :
      • enabled (par défaut, s'affiche normalement)
      • disabled (affichage grisé, impossible à cliquer)
      • hidden (ne s'affiche pas)
    • Facultatif pour les sources de sécurité dynamiques (la valeur par défaut est enabled )
    • Interdit pour les sources de sécurité ponctuelles et statiques
  • profile
    • Si cette source de sécurité interagit avec le profil géré de l'utilisateur
    • Le type d'énumération représenté sous forme de chaîne doit être l'un des éléments suivants :
      • primary_profile_only (interagit uniquement avec le profil parent uniquement)
      • all_profiles (peut également interagir avec le(s) profil(s) géré(s))
    • Sur all_profiles , plusieurs entrées d'interface utilisateur sont générées (une pour le profil parent et une pour chaque profil géré) ; la source de sécurité peut fournir des données différentes pour chaque profil
    • Obligatoire pour toutes les sources de sécurité
  • searchTerms
    • Liste des termes de recherche correspondant à l'entrée Safety Center lors de l'utilisation de la recherche dans l'application Paramètres
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_search_terms
    • Facultatif pour les sources de sécurité dynamiques et statiques (par défaut, aucun terme de recherche)
    • Interdit pour les sources de sécurité à problème uniquement
  • title
    • Titre par défaut de l'entrée de l'interface utilisateur, utilisé lorsqu'aucune donnée n'est fournie dynamiquement par la source
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_title
    • Requis pour les sources de sécurité dynamiques et statiques (sauf si initialDisplayState="hidden" sans searchTerms )
    • Interdit pour les sources de sécurité à problème uniquement
  • titleForWork
    • Titre par défaut de l'entrée d'interface utilisateur pour le profil géré utilisé lorsque les données ne sont pas fournies dynamiquement par la source
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_title_for_work
    • Obligatoire pour les sources de sécurité dynamiques et statiques qui ont spécifié profile="all_profiles" (sauf si initialDisplayState="hidden" sans searchTerms )
    • Interdit pour les sources de sécurité à problème uniquement ou les sources avec profile="primary_profile_only"
  • summary
    • Résumé par défaut de l'entrée de l'interface utilisateur (il s'agit d'une description textuelle plus longue affichée sous le titre), utilisé lorsque les données ne sont pas fournies dynamiquement par la source
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_summary
    • Facultatif pour les sources de sécurité statiques (pas de résumé par défaut)
    • Requis pour les sources de sécurité dynamiques (sauf si initialDisplayState est hidden )
    • Interdit pour les sources de sécurité à problème uniquement
  • intentAction
    • Action à déclencher lorsque l'on clique sur l'entrée de l'interface utilisateur
    • Type de chaîne, par exemple, com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS , ou ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_intent_action
    • Si cette action d'intention ne se résout pas pour le packageName donné (le cas échéant), l'entrée de l'interface utilisateur se comporte de la même manière que si initialDisplayState="disabled"
    • Requis pour les sources de sécurité statiques et les sources de sécurité dynamic qui ont initialDisplayState="enabled"
    • Interdit pour les sources de sécurité à problème uniquement
  • maxSeverityLevel
    • Niveau de gravité maximal que cette source Safety Center peut fournir
    • Entier représenté sous forme de chaîne, par exemple 300
    • Facultatif pour les sources de sécurité dynamiques et à problème uniquement (la valeur par défaut n'est pas de maximum)
    • Interdit pour les sources de sécurité statiques
  • loggingAllowed
    • Si Safety Center peut enregistrer les interactions ou les données liées à cette source
    • Booléen représenté sous forme de chaîne, par exemple false
    • Facultatif pour les sources de sécurité dynamiques et uniquement liées aux problèmes (la valeur par défaut est true )
    • Interdit pour les sources de sécurité statiques
  • refreshOnPageOpenAllowed
    • Si un signal doit être envoyé à la source de sécurité pour actualiser ses données lorsque l'écran Safety Center est ouvert
    • Booléen représenté sous forme de chaîne, par exemple, true
    • Facultatif pour les sources de sécurité dynamiques et uniquement liées aux problèmes (la valeur par défaut est false )
    • Interdit pour les sources de sécurité statiques
  • notificationsAllowed (à partir d’Android 14)
    • Si la source de sécurité peut éventuellement fournir une notification lors du signalement d'un problème
    • Booléen représenté sous forme de chaîne, par exemple, true
    • Facultatif pour les sources de sécurité dynamiques et uniquement liées aux problèmes (la valeur par défaut est false )
    • Interdit pour les sources de sécurité statiques
  • deduplicationGroup (à partir d’Android 14)
    • Un identifiant unique potentiel qui peut être utilisé pour dédupliquer les problèmes provenant de différentes sources. Les sources au sein du même groupe de déduplication peuvent envoyer des problèmes avec un identifiant de déduplication facultatif. Les problèmes avec le même identifiant de déduplication ne seront affichés qu’une seule fois dans l’interface utilisateur, même si plusieurs sources les envoient.
    • Type de chaîne
    • Facultatif pour les sources de sécurité dynamiques et uniquement liées aux problèmes (la valeur par défaut n'est pas de déduplication)
    • Interdit pour les sources de sécurité statiques
  • packageCertificateHashes (à partir d’Android 14)
    • Une liste de hachages de certificats séparés par des virgules pour le packageName donné. Si cette valeur est définie, une vérification du certificat sera effectuée par rapport au packageCertificateHashes donné pour le packageName donné lors de l'interaction avec la source de sécurité, à des fins de sécurité.
    • Type de chaîne
    • Facultatif pour les sources de sécurité dynamiques et uniquement liées aux problèmes (par défaut, aucune vérification de certificat)
    • Interdit pour les sources de sécurité statiques

Personnaliser les groupes de sources Safety Center

Les sources Safety Center doivent être contenues dans un groupe de sources Safety Center. Chaque groupe source est affiché dans l'interface utilisateur dans l'ordre dans lequel les groupes sources sont répertoriés dans le fichier. Chaque source est affichée dans le groupe dans l'ordre dans lequel les sources sont répertoriées dans le fichier. Si le groupe contient une seule source de sécurité, elle est affichée sous la forme d'une entrée unique plutôt que d'un groupe.

Configuration du groupe de sources Safety Center

Utilisez les variables suivantes pour personnaliser les groupes sources Safety Center :

  • id
    • Identifiant unique du groupe de sources de sécurité ; doit être unique dans tout le fichier
    • Type de chaîne
    • Requis
  • title
    • Titre du groupe dans l'interface utilisateur
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_title
    • Obligatoire s'il existe au moins une source de sécurité dynamique ou statique au sein du groupe (c'est-à-dire que le groupe n'est pas de type="hidden" )
  • summary
    • Brève description du groupe dans l'interface utilisateur, affichée sous le titre. Affiché dans des conditions spécifiques, généralement lorsque les données ne sont pas fournies ; sinon, le résumé est calculé sur la base des données fournies par les sources du groupe.
    • ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple, @package:string/my_summary
    • Facultatif (par défaut, pas de résumé)
  • statelessIconType
    • Type d'icône affiché pour le groupe lorsqu'aucun état n'est fourni par les sources de sécurité, par exemple, entrées statiques
    • Type Enum représenté sous la forme d'une chaîne qui doit être soit none , soit privacy (le type d'icône de confidentialité)
    • Facultatif (la valeur par défaut est none )
  • type (à partir d’Android 14)
    • Un type explicite pour qualifier la façon dont ce groupe interagit avec Safety Center
    • Le type d'énumération représenté sous forme de chaîne doit être l'un des éléments suivants :
      • stateful (affiche et contribue à l'état global du centre de sécurité)
      • stateless (affiche et ne contribue pas à l'état global du centre de sécurité)
      • hidden (ne s'affiche pas, toutes les sources doivent concerner uniquement un numéro)
    • Facultatif, déduit par défaut en utilisant les sources de sécurité contenues dans le groupe ainsi que le summary et statelessIconType . Si le type est spécifié, certains invariants supplémentaires sont appliqués pour garantir qu'il correspond aux sources rencontrées dans le groupe (par exemple, le groupe ne peut pas être hidden s'il contient des entrées visibles par l'utilisateur).

Types de groupes de sources Safety Center

Les groupes sources Safety Center sont classés comme avec état, sans état ou masqués, en fonction de l'état de certains champs.

Groupe avec état

Un groupe qui possède à la fois un titre et un résumé, ou stateLessIconType="privacy" est considéré comme avec état et contribue au statut global du Safety Center :

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

Dans Android 13, un tel groupe s’affichera sous forme d’entrée réductible dans l’interface utilisateur. Dans Android 14, il s’affichera sous la forme d’une entrée avec son propre statut qui redirige vers une sous-page.

Groupe apatride

Un groupe qui a un titre mais pas de résumé et qui stateLessIconType="none" est considéré comme apatride et ne contribue pas au statut global du Safety Center :

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

Un tel groupe s'affichera sous forme de liste rigide d'entrées dans l'interface utilisateur.

Groupe masqué

Un groupe masqué contient uniquement des sources de sécurité relatives aux problèmes et n'a pas de titre. Les groupes masqués n'apparaissent pas dans l'interface utilisateur :

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

Données dynamiques pour une entrée statique

Vous pouvez afficher la source dynamique Safety Center sous forme d'entrée statique, ce qui permet de transmettre des entrées de redirection en fonction de certaines conditions et de personnaliser son contenu au moment de l'exécution. Définissez la source dynamique au sein d'un groupe sans état, par exemple, en fonction de l'entrée d'informations de votre politique de travail.

Cet exemple montre une source de sécurité dynamique qui ne fournit pas de signal de sécurité, car elle se trouve dans un groupe sans état :

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

Dans cet exemple, la source peut envoyer uniquement des cartes d'avertissement vertes et fournir un statut non spécifié. Pour pouvoir fournir d'autres données, la source doit faire partie d'un groupe avec état.

Personnaliser les chaînes et les champs de superposition

Pour les appareils GMS qui ne sont pas configurés pour recevoir les mises à jour Mainline, au lieu de superposer l'intégralité du fichier de configuration, vous pouvez superposer six ressources de chaîne pour répondre à tous les besoins de personnalisation. Les ressources de chaîne superposées sont répertoriées dans le tableau.

Ressource de chaîne Description
google_lock_screen_sources_summary Superposez cette valeur pour définir un résumé statique qui s'affiche pour le groupe AndroidLockScreenSources lorsque toutes les sources du groupe sont dans un bon état (informations ou niveau de gravité non spécifié). Par défaut, Safety Center affiche le titre de toutes les sources du groupe concaténées comme résumé du groupe.
google_biometrics_title Superposez cette valeur pour définir un titre statique pour la source biométrique appartenant au package com.android.settings utilisé lorsqu'aucune donnée dynamique n'est fournie par la source. Superposez-le en superposant également le titre fourni dynamiquement par la source dans le package com.android.settings . Ceci est ignoré par défaut car l'état d'affichage initial de la source est hidden .
google_biometrics_summary Superposez cette valeur pour définir un résumé statique pour la source biométrique appartenant au package com.android.settings utilisé lorsqu'aucune donnée dynamique n'est fournie par la source. Ceci est ignoré par défaut car l'état d'affichage initial de la source est hidden .
google_biometrics_search_terms Superposez cette valeur pour définir une liste de termes de recherche pour la source biométrique appartenant au package com.android.settings .
google_biometrics_initial_display_state Superposez cette valeur pour afficher une entrée d'interface utilisateur pour la source biométrique appartenant au package com.android.settings lorsqu'aucune donnée dynamique n'est fournie par la source. La valeur par défaut est hidden .
google_security_updates_intent Superposez cette valeur pour modifier l'intention nécessaire pour ouvrir l'activité qui permet à l'utilisateur de vérifier et d'installer les mises à jour de sécurité. Cette action d'intention doit être associée à une activité exportée. La valeur par défaut est android.settings.SYSTEM_UPDATE_SETTINGS .

Aucune autre chaîne du package com.google.android.safetycenter.resources ne peut être superposée.

Pour les appareils AOSP, toutes les ressources du package com.android.safetycenter.resources peuvent être superposées sans aucune restriction sur le contenu.

Pour les appareils GMS qui ne sont pas configurés pour recevoir les mises à jour Mainline, créez un package com.google.android.safetycenter.resources remplaçant ou superposant com.android.safetycenter.resources définissant toutes les chaînes attendues par les tests GTS.

Ces chaînes sont :

  • 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

Exigences de personnalisation

Exigences en matière de format de fichier

Le fichier de configuration doit être un fichier XML et suivre le format décrit dans Mettre à jour le fichier de configuration . Le fichier doit être dans le dossier raw . Il doit répondre aux invariants décrits dans les groupes Personnaliser les sources Safety Center et Personnaliser les sources Safety Center . Si le fichier de configuration n'est pas bien formé conformément aux exigences ci-dessus, la fonctionnalité est complètement désactivée. L'analyse de ce fichier est également appuyée par des tests CTS et GTS qui peuvent fournir un contexte supplémentaire au cas où le fichier ne serait pas bien formé (en plus des journaux du périphérique logcat ).

Appareils de services Google

Sur les appareils GMS, certaines contraintes sont imposées sur ce fichier. Ceci est pris en charge par les tests GTS .

Appareils AOSP

Sur les appareils AOSP, le fichier de configuration doit être bien formé et réussir les tests CTS pour Safety Center. Les tests vérifient que le fichier est bien formé. Les appareils GMS doivent également réussir ces tests.