Activer ou désactiver le Centre de sécurité
Pour activer ou désactiver le Centre de sécurité, utilisez le champ booléen config_enableSafetyCenter
superposé dans le fichier frameworks/base/core/res/res/values/config.xml
.
Sur la plupart des appareils, le Centre de sécurité est compatible par défaut, par exemple sur les téléphones et les tablettes. Sur certains facteurs de forme, le centre de sécurité 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 utiliser le Centre de sécurité, 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 ou renvoie une valeur par défaut. La carte "Réglages rapides" et l'entrée "Paramètres" associées sont également affichées ou masquées selon que le Centre de sécurité 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
) permet d'activer ou de désactiver Safety Center à distance.
Dans Android 14 et versions ultérieures, aucune autre action n'est nécessaire, car cet indicateur est true
par défaut.
Dans Android 13, le Centre de sécurité est désactivé par défaut côté serveur et activé par liste d'autorisation à l'aide de cet indicateur. Envoyez les empreintes de votre appareil et contactez votre TAM pour être ajouté à la liste d'autorisation. Notez que la version principale M-2022-11
ou une version ultérieure doit être ajoutée à la liste d'autorisation.
Pour le développement et les tests en local, l'indicateur peut être activé ou désactivé localement (jusqu'à un redémarrage) à l'aide d'une commande adb
. Par exemple, pour activer l'indicateur:
adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true
Pour vérifier si le Centre de sécurité est activé :
adb root
adb shell cmd safety_center enabled
Le résultat indique si le centre de sécurité 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 du centre de sécurité. Vous pouvez superposer ce fichier si vous respectez les exigences de personnalisation.
Superposer le fichier de configuration
Pour superposer le fichier safety_center_config.xml
, consultez la section Modifier la valeur des ressources d'une application au moment de l'exécution pour en savoir plus sur la modification des superpositions de ressources d'exécution (RRO).
Dans Android 14, veillez à superposer le fichier res/raw-v34/safety_center_config.xml
et non res/raw/safety_center_config.xml
, car l'ancien 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 minimal inférieur à 34
, sinon le qualificatif v34
peut être supprimé lors de l'optimisation.
Veillez également à utiliser une superposition statique, car cette valeur est chargée au moment du démarrage.
Pour les appareils AOSP (Android Open Source Project), ciblez le package com.android.safetycenter.resources
. Aucune configuration de superposition à cibler. Toutes les ressources peuvent être superposées, sans restriction de contenu.
Pour les appareils GMS configurés pour recevoir des 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 la superposition doit se rapprocher de celle-ci :
<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
. Aucune configuration de superposition n'est ciblée. Le package de superposition doit utiliser le nom de 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 des fichiers
De manière générale, 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 du Centre de sécurité, par exemple la sécurité des applications ou le verrouillage de l'écran. 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
.
Dans Android 13, le fichier de configuration Google est le suivant :
<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>
Dans Android 14, le fichier de configuration Google est le suivant :
<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>
Dans Android 15, le fichier de configuration Google est le suivant :
<safety-center-config>
<safety-sources-config>
<safety-sources-group
id="GoogleAppSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
<dynamic-safety-source
id="GooglePlayProtect"
packageName="com.android.vending"
profile="all_profiles"
intentAction="com.google.android.finsky.PLAY_PROTECT"
title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
deduplicationGroup="AppSecurity"/>
<issue-only-safety-source
id="GoogleAppProtectionService"
packageName="com.google.android.odad"
profile="primary_profile_only"
loggingAllowed="false"
deduplicationGroup="AppSecurity"/>
</safety-sources-group>
<safety-sources-group
id="AndroidLockScreenSources"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
<dynamic-safety-source
id="AndroidLockScreen"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
initialDisplayState="disabled"
notificationsAllowed="true"
maxSeverityLevel="300"/>
<dynamic-safety-source
id="AndroidBiometrics"
packageName="com.android.settings"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
maxSeverityLevel="0"/>
<dynamic-safety-source
id="GoogleAutoLock"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
maxSeverityLevel="0"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"/>
</safety-sources-group>
<safety-sources-group
id="GoogleAccountsSources"
title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
<dynamic-safety-source
id="GoogleSecurityCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GooglePasswordCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_private_profile"
searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
initialDisplayState="hidden"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="false"/>
</safety-sources-group>
<safety-sources-group
id="GoogleDeviceFinderSources"
title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
<dynamic-safety-source
id="GoogleFindMyDevice"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
<dynamic-safety-source
id="GoogleRogueTag"
packageName="com.google.android.gms"
profile="primary_profile_only"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
initialDisplayState="hidden"/>
</safety-sources-group>
<safety-sources-group
id="GoogleUpdateSources"
title="@com.google.android.safetycenter.resources:string/google_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
<dynamic-safety-source
id="GoogleSecurityUpdates"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
<dynamic-safety-source
id="GooglePlaySystemUpdate"
packageName="com.android.vending"
profile="primary_profile_only"
intentAction="android.settings.MODULE_UPDATE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
<dynamic-safety-source
id="GoogleBackupAndRestore"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
title="@com.google.android.safetycenter.resources:string/google_backup_title"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
</safety-sources-group>
<safety-sources-group
id="AndroidCellularNetworkSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_cellular_network_security_title"
summary="@com.google.android.safetycenter.resources:string/google_cellular_network_security_summary">
<dynamic-safety-source
id="AndroidCellularNetworkSecurity"
packageName="com.android.phone"
profile="primary_profile_only"
notificationsAllowed="true"
initialDisplayState="hidden"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySources"
title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary">
<static-safety-source
id="AndroidPermissionManager"
profile="primary_profile_only"
intentAction="android.intent.action.MANAGE_PERMISSIONS"
title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
<static-safety-source
id="GoogleAdsIdentity"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
<dynamic-safety-source
id="AndroidHealthConnect"
profile="primary_profile_only"
packageName="com.google.android.healthconnect.controller"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="false"
title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
<dynamic-safety-source
id="AndroidPrivacyAppDataSharingUpdates"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"
title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
<static-safety-source
id="AndroidPrivacyControls"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
<static-safety-source
id="GoogleActivityControls"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidNotificationListener"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidBackgroundLocation"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidPermissionAutoRevoke"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySourcesAdditional"
title="@com.google.android.safetycenter.resources:string/google_privacy_additional_title">
<static-safety-source
id="AndroidPermissionUsage"
profile="primary_profile_only"
intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
<dynamic-safety-source
id="AndroidPrivateSpace"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_private_space_title"
summary="@com.google.android.safetycenter.resources:string/google_private_space_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_private_space_search_terms"
initialDisplayState="hidden"
maxSeverityLevel="0"/>
</safety-sources-group>
<safety-sources-group
id="AndroidAdvancedSources"
title="@com.google.android.safetycenter.resources:string/google_advanced_title">
<dynamic-safety-source
id="AndroidWorkPolicyInfo"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
<static-safety-source
id="AndroidMoreSettings"
profile="primary_profile_only"
intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
</safety-sources-group>
</safety-sources-config>
</safety-center-config>
Personnaliser les sources du Centre de sécurité
Types de sources du centre de sécurité
Les sources peuvent être dynamiques, réservées aux problèmes 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 les fiches 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 traitant uniquement de problèmes
Marquez la source comme issue-only-safety-source
s'il n'y a pas d'entrée de paramètres associée, mais que des avertissements sont quand même affichés. 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 de la source du centre de sécurité
En fonction du type de source du Centre de sécurité 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é. Il doit être unique dans l'ensemble du fichier et ne doit être composé que de caractères alphabétiques (a-z, A-Z) et 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 réservées aux problèmes
- Interdit pour les sources de sécurité statiques dans Android 13. Dans Android 14, il peut être défini pour cibler explicitement plutôt qu'implicitement le
intentAction
de la source (pour en savoir plus, consultez la documentation sur la résolution d'intent).
- Nom du package propriétaire de cette source de sécurité (par exemple,
initialDisplayState
- Affichage de l'entrée de l'UI 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 correspondre à l'un des types suivants :
enabled
(par défaut, s'affiche normalement)disabled
(grisé, il est impossible de cliquer dessus)hidden
(ne s'affiche pas)
- Facultatif pour les sources de sécurité dynamiques (valeur par défaut :
enabled
) - Interdit pour les sources de sécurité statiques et traitant uniquement d'un problème
profile
- Indique 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 suivants :
primary_profile_only
(n'interagit qu'avec le parent du profil)all_profiles
(peut également interagir avec le ou les profils gérés et à partir d'Android 15 avec le profil privé)
- Sur
all_profiles
, plusieurs entrées d'UI sont générées (une pour le parent du profil 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 qui correspondent à l'entrée du centre de sécurité lorsque vous utilisez 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 (aucun terme de recherche par défaut)
- Interdit pour les sources de sécurité portant uniquement sur des problèmes
title
- Titre par défaut de l'entrée de l'UI, utilisé lorsqu'aucune donnée n'est fournie de manière dynamique par la source
- ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple
@package:string/my_title
- Obligatoire pour les sources de sécurité dynamiques et statiques (sauf si
initialDisplayState="hidden"
sanssearchTerms
) - Interdit pour les sources de sécurité uniquement pour les problèmes
titleForWork
- Titre par défaut de l'entrée de l'UI pour le profil géré utilisé lorsque les données ne sont pas fournies de manière dynamique 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 siinitialDisplayState="hidden"
sanssearchTerms
) - Interdit pour les sources de sécurité présentant uniquement des problèmes ou avec
profile="primary_profile_only"
summary
- Résumé par défaut de l'entrée de l'UI (il s'agit d'une description textuelle plus longue affichée sous le titre), utilisé lorsque les données ne sont pas fournies de manière dynamique 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 (par défaut, aucun résumé)
- Obligatoire pour les sources de sécurité dynamiques (sauf si
initialDisplayState
esthidden
) - Interdit pour les sources de sécurité portant uniquement sur des problèmes
intentAction
- Action à déclencher lorsque l'utilisateur 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'intent ne se résout pas pour l'élément
packageName
donné (le cas échéant), l'entrée d'interface utilisateur se comporte de la même manière queinitialDisplayState="disabled"
. - Obligatoire pour les sources de sécurité statiques et les sources de sécurité
dynamic
présentantinitialDisplayState="enabled"
- Interdit pour les sources de sécurité uniquement pour les problèmes
maxSeverityLevel
- Niveau de gravité maximal que cette source du centre de sécurité peut fournir
- Entier représenté sous forme de chaîne, par exemple
300
- Facultatif pour les sources de sécurité dynamiques et spécifiques à un problème (la valeur par défaut n'est pas maximale)
- Interdit pour les sources de sécurité statiques
loggingAllowed
- Indique si le centre de sécurité peut consigner les interactions ou les données associées à cette source.
- Booléen représenté sous forme de chaîne, par exemple
false
- Facultatif pour les sources de sécurité dynamiques et spécifiques à un problème (la valeur par défaut est
true
) - Interdit pour les sources de sécurité statiques
refreshOnPageOpenAllowed
- Indique si un signal doit être envoyé à la source de sécurité pour actualiser ses données lorsque l'écran du Centre de sécurité est ouvert
- Valeur booléenne représentée par une chaîne, par exemple
true
- Facultatif pour les sources de sécurité dynamiques et spécifiques à un problème (la valeur par défaut est
false
) - Interdit pour les sources de sécurité statiques
notificationsAllowed
(à partir d'Android 14)- Indique si la source de sécurité peut éventuellement fournir une notification lorsqu'elle signale un problème
- Booléen représenté sous forme de chaîne (par exemple,
true
) - Facultatif pour les sources de sécurité dynamiques et spécifiques à un problème (la valeur par défaut est
false
) - Interdit pour les sources de sécurité statiques
deduplicationGroup
(à partir d'Android 14)- Identifiant unique potentiel pouvant être utilisé pour dédupliquer les problèmes provenant de différentes sources. Les sources au sein d'un même groupe de déduplication peuvent envoyer des problèmes avec un ID de déduplication facultatif. Les problèmes associés au même ID de déduplication ne s'affichent 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 spécifiques aux problèmes (par défaut, aucune déduplication)
- Interdit pour les sources de sécurité statiques
packageCertificateHashes
(à partir d'Android 14)- Liste des hachages de certificats, séparés par une virgule, pour l'
packageName
donné. Si ce paramètre est défini, une vérification de certificat est effectuée sur lepackageCertificateHashes
donné pour lepackageName
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 réservées aux problèmes (par défaut, aucune vérification de certificat n'est effectuée)
- Interdit pour les sources de sécurité statiques
- Liste des hachages de certificats, séparés par une virgule, pour l'
titleForPrivateProfile
(à partir d'Android 15)- Titre par défaut de l'entrée d'interface utilisateur pour le profil privé 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_private_profile
- Obligatoire pour les sources de sécurité dynamiques et statiques qui ont spécifié
profile="all_profiles"
(saufinitialDisplayState="hidden"
sanssearchTerms
) - Interdit pour les sources de sécurité réservées aux problèmes ou les sources avec
profile="primary_profile_only"
Personnaliser les groupes de sources du Centre de sécurité
Les sources du Centre de sécurité doivent être contenues dans un groupe de sources du Centre de sécurité. Chaque groupe de sources s'affiche dans l'UI dans l'ordre dans lequel les groupes de sources sont listés dans le fichier. Chaque source s'affiche dans le groupe dans l'ordre dans lequel elle est listée dans le fichier. Si le groupe contient une seule source de sécurité, il est affiché comme une entrée unique et non comme un groupe.
Configuration du groupe de sources du centre de sécurité
Utilisez les variables suivantes pour personnaliser les groupes de sources du centre de sécurité:
id
- Identifiant unique du groupe de sources de sécurité. Doit être unique dans l'ensemble du fichier.
- Type de chaîne
- Obligatoire
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 si le groupe contient au moins une source de sécurité dynamique ou statique (c'est-à-dire que le groupe n'est pas de type
type="hidden"
)
summary
- Brève description du groupe dans l'interface utilisateur, affichée sous le titre. Ils sont affichés dans des conditions spécifiques, généralement lorsque les données ne sont pas fournies. Sinon, le résumé est calculé en fonction des données fournies par les sources dans le groupe.
- ID de ressource représenté sous la forme d'un nom de ressource complet, par exemple
@package:string/my_summary
- Facultatif (aucun résumé par défaut)
statelessIconType
- Type d'icône affiché pour le groupe lorsqu'aucun état n'est fourni par les sources de sécurité (par exemple, les entrées statiques)
- Type d'énumération représenté sous forme de chaîne qui doit être
none
ouprivacy
(type d'icône de confidentialité) - Facultatif (par défaut :
none
)
type
(à partir d'Android 14)- Type explicite pour qualifier la manière dont ce groupe interagit avec le Centre de sécurité
- Le type d'énumération représenté sous forme de chaîne doit être l'un des suivants :
stateful
(affiche l'état général du centre de sécurité et y contribue)stateless
(s'affiche et n'a aucune incidence sur l'état global du Centre de sécurité)hidden
(ne s'affiche pas, toutes les sources doivent être réservées aux problèmes)
- Facultatif, inféré par défaut à l'aide des sources de sécurité contenues dans le groupe, ainsi que des
summary
etstatelessIconType
. Sitype
est spécifié, des invariants supplémentaires sont appliqués pour s'assurer qu'il correspond aux sources rencontrées dans le groupe (par exemple, le groupe ne peut pas êtrehidden
s'il contient des entrées visibles par l'utilisateur).
Types de groupes de sources du Centre de sécurité
Les groupes de sources du Centre de sécurité sont classés comme étant avec état, sans état ou masqués, en fonction de l'état de certains champs.
Groupe avec état
Un groupe qui comporte à la fois un titre et un résumé, ou stateLessIconType="privacy"
, est considéré comme ayant un état et contribue à l'état global du Centre de sécurité :
<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'UI. Dans Android 14, elle s'affiche sous la forme d'une entrée avec son propre état qui redirige vers une sous-page.
Groupe sans état
Un groupe qui possède un titre, mais pas de résumé, et stateLessIconType="none"
est considéré comme sans état et ne contribue pas à l'état général du centre de sécurité:
<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 apparaîtra sous la forme d'une liste rigide d'entrées dans l'interface utilisateur.
Groupe masqué
Un groupe masqué ne contient que des sources de sécurité liées à des problèmes et ne comporte pas de titre. Les groupes masqués ne s'affichent pas dans l'UI :
<safety-sources-group
id="HiddenGroup">
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
Données dynamiques pour une entrée statique
Vous pouvez afficher la source dynamique du centre de sécurité en tant qu'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 dans un groupe sans état, par exemple, en fonction de l'entrée des informations sur vos règles professionnelles.
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 ne peut transmettre que des cartes d'avertissement vertes et fournir un état non spécifié. Pour pouvoir fournir d'autres données, la source doit se trouver dans 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 principales, au lieu de superposer l'ensemble 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 qui sont 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 en bon état (informations ou niveau de gravité non spécifié). Par défaut, le centre de sécurité affiche le titre de toutes les sources du groupe concaténé en tant que résumé pour le 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 lorsque vous superposez également le titre fourni dynamiquement par la source dans le package com.android.settings . Cette valeur est ignorée 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. Ce paramètre 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'intent nécessaire pour ouvrir l'activité permettant à l'utilisateur de vérifier et d'installer les mises à jour de sécurité. Cette action d'intent 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 restriction sur le contenu.
Pour les appareils GMS qui ne sont pas configurés pour recevoir les mises à jour principales, créez un package com.google.android.safetycenter.resources
remplaçant ou recouvrant com.android.safetycenter.resources
, qui définit toutes les chaînes attendues par les tests GTS.
Ces chaînes sont les suivantes:
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 relatives au format de fichier
Le fichier de configuration doit être un fichier XML et respecter le format décrit dans la section Mettre à jour le fichier de configuration. Le fichier doit se trouver dans le dossier raw
. Il doit respecter les invariants décrits dans Personnaliser les sources du centre de sécurité et Personnaliser les groupes de sources du centre de sécurité. Si le fichier de configuration n'est pas adapté aux exigences ci-dessus, la fonctionnalité est complètement désactivée. L'analyse de ce fichier est également prise en charge par des tests CTS et GTS qui peuvent fournir un contexte supplémentaire si le fichier n'est pas bien formé (en plus des journaux de l'appareil logcat).
Appareils liés aux services Google
Sur les appareils GMS, certaines contraintes sont imposées à ce fichier. Cela est compatible avec les tests GTS.
Appareils AOSP
Sur les appareils AOSP, le fichier de configuration doit être bien formé et réussir les tests CTS du centre de sécurité. Les tests vérifient que le fichier est bien formé. Les appareils GMS doivent également réussir ces tests.