Personalizza il Centro sicurezza

Abilita o disabilita Centro sicurezza

Per abilitare o disabilitare Safety Center, utilizzare il campo booleano sovrapponibile config_enableSafetyCenter nel file frameworks/base/core/res/res/values/config.xml .

Sulla maggior parte dei dispositivi, Safety Center è supportato per impostazione predefinita, ad esempio su telefoni e tablet. Su alcuni fattori di forma, Centro sicurezza è disabilitato per impostazione predefinita, ad esempio su Auto, TV e Usura.

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- ... -->
   <!-- Determines whether SafetyCenter feature is enabled. -->
    <bool name="config_enableSafetyCenter">true</bool>
    <!-- ... -->
</resources>

Per supportare Safety Center, imposta config_enableSafetyCenter su true . Se non desideri supportare Safety Center, imposta questo valore su false per disabilitarlo.

Quando il Centro sicurezza è disabilitato, qualsiasi tentativo di reindirizzamento alla pagina Sicurezza e privacy apre invece l'app Impostazioni. Qualsiasi tentativo di interagire con le API viene ignorato silenziosamente o restituisce un valore predefinito. Anche il riquadro Impostazioni rapide e la voce Impostazioni associati vengono esposti o nascosti a seconda che Centro sicurezza sia abilitato.

Flag DeviceConfig

Oltre ad abilitare Safety Center utilizzando la configurazione config_enableSafetyCenter , viene utilizzato un flag DeviceConfig ( safety_center_is_enabled ) per abilitare o disabilitare in remoto Safety Center.

In Android 14 e versioni successive non sono necessarie ulteriori azioni poiché questo flag è true per impostazione predefinita.

In Android 13, Safety Center è disabilitato per impostazione predefinita sul lato server e abilitato dalla lista consentita utilizzando questo flag. Invia le impronte digitali del tuo dispositivo e contatta il tuo TAM per essere aggiunto alla lista consentita. Tieni presente che è necessario aggiungere alla lista consentita la versione principale M-2022-11 o successiva. Per lo sviluppo e il test locale, il flag può essere abilitato o disabilitato localmente (fino al riavvio) con un comando adb . Ad esempio, per abilitare il flag:

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

E per verificare se il Centro sicurezza è abilitato:

adb root
adb shell cmd safety_center enabled

L'output restituirà se Safety Center è abilitato correttamente sul dispositivo.

Aggiorna il file di configurazione

Utilizzare il file di configurazione safety_center_config.xml per modificare il contenuto della schermata Safety Center. Puoi sovrapporre questo file presupponendo che tu abbia soddisfatto i requisiti di personalizzazione .

Sovrapponi il file di configurazione

Per sovrapporre il file safety_center_config.xml , consulta Modificare il valore delle risorse di un'app in fase di esecuzione per informazioni sulla modifica degli overlay delle risorse di runtime (RRO).

In Android 14, assicurati di sovrapporre il file res/raw-v34/safety_center_config.xml e non res/raw/safety_center_config.xml poiché il primo ha la precedenza (questo vale anche per altri file che rientrano nell'ambito v34 , ad esempio res/values-v34/strings.xml ). Il pacchetto overlay deve avere un SDK minimo inferiore a 34 , altrimenti il ​​qualificatore v34 potrebbe essere rimosso durante l'ottimizzazione. Assicurati inoltre di utilizzare un overlay statico, poiché questo valore viene caricato durante il momento dell'avvio.

Per i dispositivi Android Open Source Project (AOSP), scegli come target il pacchetto com.android.safetycenter.resources . Non esiste alcuna configurazione overlay da scegliere come target. Tutte le risorse sono sovrapponibili senza alcuna restrizione sul contenuto.

Per i dispositivi GMS configurati per ricevere aggiornamenti Mainline, scegli come target il pacchetto com.google.android.safetycenter.resources . Scegli come target la configurazione SafetyCenterConfig . Questa configurazione richiede che il pacchetto overlay si trovi nella partizione del product , system o vendor . Gli OEM GMS devono copiare il file safety_center_config.xml fornito da Google e limitare le modifiche a quelle consentite dai test GTS . La definizione di overlay dovrebbe essere simile a questa:

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

Per i dispositivi GMS che non sono configurati per ricevere gli aggiornamenti Mainline, scegli come target il pacchetto com.android.safetycenter.resources . Non esiste alcuna configurazione overlay da scegliere come target. Il pacchetto overlay deve utilizzare il nome del pacchetto com.google.android.safetycenter.resources .

Gli OEM GMS devono copiare il file safety_center_config.xml fornito da Google e limitare le modifiche a quelle consentite dai test GTS. Gli OEM GMS devono inoltre definire le stringhe utilizzate nella configurazione XML.

Struttura dei file

Ad alto livello, il file safety_center_config.xml è un elenco di origini di sicurezza. Queste fonti di sicurezza sono organizzate in gruppi per gestire i segnali sulla schermata Centro sicurezza, ad esempio Sicurezza app o Blocco schermo. L'ordine di questo elenco definisce l'ordine di visualizzazione:

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

File di configurazione di Google

Il file di configurazione AOSP si trova in packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml .

In Android 13, il file di configurazione di Google è:

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                loggingAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                maxSeverityLevel="300"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
            statelessIconType="privacy">
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidAdvancedSecurity"
                profile="primary_profile_only"
                intentAction="com.android.settings.security.SECURITY_ADVANCED_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_advanced_security_title"
                summary="@com.google.android.safetycenter.resources:string/google_advanced_security_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_security_search_terms"/>
            <static-safety-source
                id="AndroidAdvancedPrivacy"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_ADVANCED_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_advanced_privacy_title"
                summary="@com.google.android.safetycenter.resources:string/google_advanced_privacy_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_privacy_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

In Android 14, il file di configurazione di Google è:

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                deduplicationGroup="AppSecurity"/>
            <issue-only-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                loggingAllowed="false"
                deduplicationGroup="AppSecurity"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                notificationsAllowed="true"
                maxSeverityLevel="300"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePasswordCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
                searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
                initialDisplayState="hidden"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
            <dynamic-safety-source
                id="GoogleBackupAndRestore"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                title="@com.google.android.safetycenter.resources:string/google_backup_title"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
            statelessIconType="privacy">
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <static-safety-source
                id="GoogleAdsIdentity"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
            <dynamic-safety-source
                id="AndroidHealthConnect"
                profile="primary_profile_only"
                packageName="com.google.android.healthconnect.controller"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="false"
                title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivacyAppDataSharingUpdates"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"
                title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <static-safety-source
                id="GoogleActivityControls"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidMoreSettings"
                profile="primary_profile_only"
                intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
                summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

Personalizza le origini del Centro sicurezza

Tipi di origine del Centro sicurezza

Le origini possono essere dinamiche, relative ai soli problemi o statiche, in base al tipo di dati che forniscono al Centro sicurezza.

Fonti dinamiche

Contrassegnare l'origine di sicurezza come dynamic-safety-source se può fornire dati dinamici al Safety Center sia per le sue schede di ingresso che per quelle di potenziale avviso:

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

Fonti di sola emissione

Contrassegna la fonte come issue-only-safety-source se non è presente alcuna voce di impostazione associata ma vengono comunque forniti avvisi. Puoi fornire solo avvisi; fornire una voce di impostazione genera un errore:

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

Fonti statiche

Contrassegna l'origine come static-safety-source se si tratta di una voce di reindirizzamento senza dati dinamici:

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

Configurazione dell'origine del Centro sicurezza

A seconda del tipo di origine di Safety Center e di altre varianti, i campi del file di configurazione sono facoltativi, obbligatori o vietati e possono essere personalizzati:

  • id
    • L'identificatore univoco per la fonte di sicurezza deve essere univoco nell'intero file e deve essere composto solo da caratteri alfabetici (az, AZ) e fa distinzione tra maiuscole e minuscole
    • Tipo di stringa
    • Obbligatorio per tutti i tipi di sorgenti di sicurezza
  • packageName
    • Nome del pacchetto che possiede questa origine di sicurezza, ad esempio com.google.android.permissioncontroller
    • Tipo di stringa
    • Obbligatorio per origini di sicurezza dinamiche e di soli problemi
    • Vietato per fonti di sicurezza statiche in Android 13; in Android 14 questo può essere facoltativamente impostato per indirizzare l' intentAction dell'origine in modo esplicito anziché implicito (vedere la documentazione sulla risoluzione dell'intento per maggiori dettagli)
  • initialDisplayState
    • Come viene visualizzata la voce dell'interfaccia utente quando l'origine di sicurezza non fornisce dati
    • Il tipo enum rappresentato come stringa deve essere uno dei seguenti:
      • enabled (predefinito, viene visualizzato normalmente)
      • disabled (visualizzato in grigio, non può essere cliccato)
      • hidden (non viene visualizzato)
    • Opzionale per sorgenti di sicurezza dinamiche (l'impostazione predefinita è enabled )
    • Vietato per sorgenti di sola emissione e di sicurezza statica
  • profile
    • Se questa origine di sicurezza interagisce con il profilo gestito dell'utente
    • Il tipo enum rappresentato come stringa deve essere uno dei seguenti:
      • primary_profile_only (interagisce solo con il profilo principale)
      • all_profiles (può anche interagire con i profili gestiti)
    • Su all_profiles vengono generate diverse voci dell'interfaccia utente (una per il profilo principale e una per ciascun profilo gestito); la fonte di sicurezza può fornire dati diversi per ciascun profilo
    • Necessario per tutte le sorgenti di sicurezza
  • searchTerms
    • Elenco di termini di ricerca associati alla voce Safety Center quando si utilizza la ricerca nell'app Impostazioni
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_search_terms
    • Facoltativo per origini di sicurezza dinamiche e statiche (l'impostazione predefinita non prevede termini di ricerca)
    • Vietato per fonti di sicurezza di sola emissione
  • title
    • Titolo predefinito della voce dell'interfaccia utente, utilizzato quando l'origine non fornisce dati dinamicamente
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_title
    • Obbligatorio per origini di sicurezza dinamiche e statiche (a meno che initialDisplayState="hidden" senza searchTerms )
    • Vietato per fonti di sicurezza di sola emissione
  • titleForWork
    • Titolo predefinito della voce dell'interfaccia utente per il profilo gestito utilizzato quando i dati non vengono forniti dinamicamente dall'origine
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_title_for_work
    • Obbligatorio per origini di sicurezza dinamiche e statiche che hanno specificato profile="all_profiles" (a meno che initialDisplayState="hidden" senza searchTerms )
    • Vietato per fonti di sicurezza solo per problemi o fonti con profile="primary_profile_only"
  • summary
    • Riepilogo predefinito della voce dell'interfaccia utente (si tratta di una descrizione testuale più lunga visualizzata sotto il titolo), utilizzata quando i dati non vengono forniti dinamicamente dalla fonte
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_summary
    • Opzionale per sorgenti di sicurezza statiche (il valore predefinito non è un riepilogo)
    • Obbligatorio per le origini di sicurezza dinamiche (a meno che initialDisplayState non sia hidden )
    • Vietato per fonti di sicurezza di sola emissione
  • intentAction
    • Azione da attivare quando si fa clic sulla voce dell'interfaccia utente
    • Tipo di stringa, ad esempio com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS o ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_intent_action
    • Se questa azione di intento non viene risolta per il packageName specificato (se presente), la voce dell'interfaccia utente si comporta come se avesse initialDisplayState="disabled"
    • Obbligatorio per le origini di sicurezza statica e le origini di sicurezza dynamic che hanno initialDisplayState="enabled"
    • Vietato per fonti di sicurezza di sola emissione
  • maxSeverityLevel
    • Livello di gravità massimo che questa origine del Centro sicurezza può fornire
    • Numero intero rappresentato come stringa, ad esempio 300
    • Facoltativo per origini di sicurezza dinamiche e di sola emissione (il valore predefinito non è il massimo)
    • Vietato per sorgenti di sicurezza statiche
  • loggingAllowed
    • Indica se Safety Center può registrare interazioni o dati relativi a questa origine
    • Booleano rappresentato come una stringa, ad esempio false
    • Facoltativo per origini di sicurezza dinamiche e di soli problemi (l'impostazione predefinita è true )
    • Vietato per sorgenti di sicurezza statiche
  • refreshOnPageOpenAllowed
    • Se è necessario inviare un segnale all'origine di sicurezza per aggiornare i propri dati quando viene aperta la schermata Safety Center
    • Booleano rappresentato come una stringa, ad esempio true
    • Facoltativo per origini di sicurezza dinamiche e di soli problemi (l'impostazione predefinita è false )
    • Vietato per sorgenti di sicurezza statiche
  • notificationsAllowed (a partire da Android 14)
    • Se la fonte di sicurezza può facoltativamente fornire una notifica quando segnala un problema
    • Booleano rappresentato come una stringa, ad esempio true
    • Facoltativo per origini di sicurezza dinamiche e di soli problemi (l'impostazione predefinita è false )
    • Vietato per sorgenti di sicurezza statiche
  • deduplicationGroup (a partire da Android 14)
    • Un potenziale identificatore univoco che può essere utilizzato per deduplicare i problemi provenienti da fonti diverse. Le origini all'interno dello stesso gruppo di deduplicazione possono inviare problemi con un ID di deduplicazione opzionale. I problemi con lo stesso ID di deduplicazione verranno visualizzati solo una volta nell'interfaccia utente, anche se vengono inviati da più origini.
    • Tipo di stringa
    • Facoltativo per origini di sicurezza dinamiche e di soli problemi (l'impostazione predefinita è nessuna deduplicazione)
    • Vietato per sorgenti di sicurezza statiche
  • packageCertificateHashes (a partire da Android 14)
    • Un elenco separato da virgole di hash di certificato per il packageName specificato. Se è impostato, verrà eseguito un controllo del certificato rispetto al packageCertificateHashes specificato per il packageName specificato quando si interagisce con l'origine di sicurezza, per motivi di sicurezza.
    • Tipo di stringa
    • Facoltativo per origini di sicurezza dinamiche e basate solo sui problemi (l'impostazione predefinita non prevede controlli del certificato)
    • Vietato per sorgenti di sicurezza statiche

Personalizza i gruppi di origini del Centro sicurezza

Le origini del Centro sicurezza devono essere contenute all'interno di un gruppo di origini del Centro sicurezza. Ciascun gruppo di origini viene visualizzato nell'interfaccia utente nell'ordine in cui i gruppi di origini sono elencati nel file. Ciascuna fonte viene visualizzata all'interno del gruppo nell'ordine in cui le fonti sono elencate nel file. Se il gruppo contiene una singola fonte di sicurezza, viene visualizzato come una singola voce anziché come un gruppo.

Configurazione del gruppo di origini di Safety Center

Utilizza le seguenti variabili per personalizzare i gruppi di origine di Safety Center:

  • id
    • Identificatore univoco per il gruppo di fonti di sicurezza; deve essere univoco in tutto il file
    • Tipo di stringa
    • Necessario
  • title
    • Titolo del gruppo nell'interfaccia utente
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_title
    • Obbligatorio se è presente almeno un'origine di sicurezza dinamica o statica all'interno del gruppo (ovvero il gruppo non è di type="hidden" )
  • summary
    • Breve descrizione del gruppo nell'interfaccia utente, visualizzata sotto il titolo. Visualizzato in condizioni specifiche, in genere quando non vengono forniti dati; in caso contrario, la sintesi viene calcolata sulla base dei dati forniti dalle fonti interne al gruppo.
    • ID risorsa rappresentato come nome di risorsa completo, ad esempio @package:string/my_summary
    • Facoltativo (l'impostazione predefinita non è un riepilogo)
  • statelessIconType
    • Tipo di icona visualizzato per il gruppo quando non viene fornito alcuno stato dalle origini di sicurezza, ad esempio voci statiche
    • Tipo enum rappresentato come una stringa che deve essere none o privacy (il tipo di icona privacy)
    • Facoltativo (il valore predefinito è none )
  • type (a partire da Android 14)
    • Un tipo esplicito per qualificare il modo in cui questo gruppo interagisce con Safety Center
    • Il tipo enum rappresentato come stringa deve essere uno dei seguenti:
      • stateful (visualizza e contribuisce allo stato generale del Safety Center)
      • stateless (visualizza e non contribuisce allo stato generale di Safety Center)
      • hidden (non viene visualizzato, tutte le fonti devono contenere solo problemi)
    • Facoltativo, dedotto per impostazione predefinita utilizzando le origini di sicurezza contenute nel gruppo nonché il summary e statelessIconType . Se il type è specificato, vengono applicate alcune invarianti aggiuntive per assicurarsi che corrisponda alle origini incontrate nel gruppo (ad esempio, il gruppo non può essere hidden se contiene voci visibili all'utente)

Tipi di gruppi di origine del Centro sicurezza

I gruppi di origini Safety Center sono classificati come con stato, senza stato o nascosti, in base allo stato di determinati campi.

Gruppo con stato

Un gruppo che ha sia un titolo che un riepilogo oppure stateLessIconType="privacy" è considerato con stato contribuisce allo stato generale di 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>

In Android 13, tale gruppo verrà visualizzato come voce comprimibile nell'interfaccia utente. In Android 14 verrà visualizzata come una voce con il proprio stato che reindirizza alla pagina secondaria.

Gruppo apolide

Un gruppo che ha un titolo ma nessun riepilogo e stateLessIconType="none" è considerato senza stato e non contribuisce allo stato generale del Centro sicurezza:

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

Tale gruppo verrà visualizzato come un elenco rigido di voci nell'interfaccia utente.

Gruppo nascosto

Un gruppo nascosto contiene solo fonti di sicurezza relative ai soli problemi e non ha un titolo. I gruppi nascosti non vengono visualizzati nell'interfaccia utente:

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

Dati dinamici per una voce statica

È possibile visualizzare l'origine dinamica di Safety Center come voce statica, che consente di inviare voci di reindirizzamento in base ad alcune condizioni e di personalizzarne il contenuto in fase di esecuzione. Definisci l'origine dinamica all'interno di un gruppo stateless, ad esempio, in base alla voce delle informazioni sulla politica del lavoro.

Questo esempio mostra un'origine di sicurezza dinamica che non fornisce un segnale di sicurezza perché si trova in un gruppo senza stato:

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

In questo esempio, la fonte può inviare solo carte di avvertimento verdi e fornire uno stato non specificato. Per poter fornire altri dati, l'origine deve trovarsi all'interno di un gruppo con stato.

Personalizza stringhe e campi in sovrapposizione

Per i dispositivi GMS che non sono configurati per ricevere gli aggiornamenti Mainline, invece di sovrapporre l'intero file di configurazione, è possibile sovrapporre sei risorse stringa per soddisfare tutte le esigenze di personalizzazione. Le risorse stringa sovrapposte sono elencate nella tabella.

Risorsa stringa Descrizione
google_lock_screen_sources_summary Sovrapponi questo valore per definire un riepilogo statico visualizzato per il gruppo AndroidLockScreenSources quando tutte le origini nel gruppo sono in buono stato (informazioni o livello di gravità non specificato). Per impostazione predefinita, Safety Center visualizza il titolo di tutte le fonti nel gruppo concatenate come riepilogo del gruppo.
google_biometrics_title Sovrapponi questo valore per definire un titolo statico per la fonte biometrica di proprietà del pacchetto com.android.settings utilizzato quando la fonte non fornisce dati dinamici. Sovrapponilo quando sovrapponi anche il titolo fornito dinamicamente dalla fonte nel pacchetto com.android.settings . Questo viene ignorato per impostazione predefinita poiché lo stato di visualizzazione iniziale dell'origine è hidden .
google_biometrics_summary Sovrapponi questo valore per definire un riepilogo statico per la fonte biometrica di proprietà del pacchetto com.android.settings utilizzato quando la fonte non fornisce dati dinamici. Questo viene ignorato per impostazione predefinita poiché lo stato di visualizzazione iniziale dell'origine è hidden .
google_biometrics_search_terms Sovrapponi questo valore per definire un elenco di termini di ricerca per la fonte biometrica di proprietà del pacchetto com.android.settings .
google_biometrics_initial_display_state Sovrapponi questo valore per mostrare una voce dell'interfaccia utente per la fonte biometrica di proprietà del pacchetto com.android.settings quando la fonte non fornisce dati dinamici. Il valore predefinito è hidden .
google_security_updates_intent Sovrapponi questo valore per modificare l'intento necessario per aprire l'attività che consente all'utente di verificare e installare gli aggiornamenti di sicurezza. Questa azione di intento deve essere associata a un'attività esportata. Il valore predefinito è android.settings.SYSTEM_UPDATE_SETTINGS .

Nessun'altra stringa nel pacchetto com.google.android.safetycenter.resources è sovrapponibile.

Per i dispositivi AOSP, tutte le risorse nel pacchetto com.android.safetycenter.resources sono sovrapponibili senza restrizioni sul contenuto.

Per i dispositivi GMS che non sono configurati per ricevere gli aggiornamenti Mainline, crea un pacchetto com.google.android.safetycenter.resources sostituendo o sovrapponendo com.android.safetycenter.resources definendo tutte le stringhe previste dai test GTS.

Queste stringhe sono:

  • 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

Requisiti di personalizzazione

Requisiti del formato file

Il file di configurazione deve essere un file XML e seguire il formato descritto in Aggiornare il file di configurazione . Il file deve trovarsi nella cartella raw . Deve soddisfare le invarianti descritte in Personalizza origini Safety Center e Personalizza gruppi di origini Safety Center . Se il file di configurazione non è ben formato in linea con i requisiti di cui sopra, la funzionalità viene completamente disabilitata. L'analisi di questo file è supportata anche da test CTS e GTS che possono fornire contesto aggiuntivo nel caso in cui il file non sia ben formato (oltre ai log del dispositivo logcat ).

Dispositivi dei servizi Google

Sui dispositivi GMS vengono imposti alcuni vincoli su questo file. Ciò è supportato dai test GTS .

Dispositivi AOSP

Sui dispositivi AOSP, il file di configurazione deve essere ben formato e superare i test CTS per Safety Center. I test verificano che il file sia ben formato. Anche i dispositivi GMS devono superare questi test.