Dostosuj Centrum bezpieczeństwa

Włącz lub wyłącz Centrum bezpieczeństwa

Aby włączyć lub wyłączyć Centrum bezpieczeństwa, użyj nakładanego pola logicznego config_enableSafetyCenter w pliku frameworks/base/core/res/res/values/config.xml .

Na większości urządzeń Centrum bezpieczeństwa jest domyślnie obsługiwane, np. na telefonach i tabletach. W niektórych obudowach Centrum bezpieczeństwa jest domyślnie wyłączone, na przykład w trybach Auto, TV i 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>

Aby obsługiwać Centrum bezpieczeństwa, ustaw config_enableSafetyCenter na true . Jeśli nie chcesz obsługiwać Centrum bezpieczeństwa, ustaw tę wartość na false , aby ją wyłączyć.

Gdy Centrum bezpieczeństwa jest wyłączone, każda próba przekierowania na stronę Bezpieczeństwo i prywatność powoduje otwarcie aplikacji Ustawienia. Każda próba interakcji z interfejsami API jest dyskretnie ignorowana lub zwraca wartość domyślną. Powiązany kafelek Szybkich ustawień i wpis Ustawienia są również widoczne lub ukryte w zależności od tego, czy Centrum bezpieczeństwa jest włączone.

Flaga konfiguracji urządzenia

Oprócz włączania Centrum bezpieczeństwa przy użyciu konfiguracji config_enableSafetyCenter , flaga DeviceConfig ( safety_center_is_enabled ) służy do zdalnego włączania lub wyłączania Centrum bezpieczeństwa.

W systemie Android 14 i nowszych nie jest konieczne żadne dalsze działanie, ponieważ ta flaga domyślnie ma wartość true .

W systemie Android 13 Centrum bezpieczeństwa jest domyślnie wyłączone po stronie serwera i włączone na liście dozwolonych przy użyciu tej flagi. Prześlij odciski palców swojego urządzenia i skontaktuj się z TAMem, aby dodać je do listy dozwolonych. Pamiętaj, że do listy dozwolonych wymagane jest dodanie głównej wersji M-2022-11 lub nowszej. W przypadku lokalnego programowania i testowania flagę można włączyć lub wyłączyć lokalnie (do ponownego uruchomienia) za pomocą polecenia adb . Na przykład, aby włączyć 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

Aby sprawdzić, czy Centrum bezpieczeństwa jest włączone:

adb root
adb shell cmd safety_center enabled

Dane wyjściowe zwrócą informację, czy Centrum bezpieczeństwa jest prawidłowo włączone na urządzeniu.

Zaktualizuj plik konfiguracyjny

Użyj pliku konfiguracyjnego safety_center_config.xml , aby zmodyfikować zawartość ekranu Centrum bezpieczeństwa. Możesz nałożyć ten plik, zakładając, że spełniłeś wymagania dotyczące dostosowywania .

Nałóż plik konfiguracyjny

Aby nałożyć plik safety_center_config.xml , zobacz temat Zmiana wartości zasobów aplikacji w czasie wykonywania , aby uzyskać informacje na temat modyfikowania nakładek zasobów środowiska wykonawczego (RRO).

W systemie Android 14 pamiętaj o nałożeniu pliku res/raw-v34/safety_center_config.xml a nie pliku res/raw/safety_center_config.xml ponieważ ten pierwszy ma pierwszeństwo (dotyczy to również innych plików objętych zakresem v34 , np res/values-v34/strings.xml ). Pakiet nakładki musi mieć minimalny zestaw SDK niższy niż 34 , w przeciwnym razie kwalifikator v34 może zostać usunięty podczas optymalizacji. Upewnij się także, że używasz nakładki statycznej, ponieważ ta wartość jest ładowana w czasie uruchamiania systemu.

W przypadku urządzeń z systemem Android Open Source Project (AOSP) wybierz pakiet com.android.safetycenter.resources . Nie ma konfiguracji nakładki, na którą można by kierować. Wszystkie zasoby można nakładać bez ograniczeń dotyczących zawartości.

W przypadku urządzeń GMS skonfigurowanych do otrzymywania aktualizacji Mainline wybierz pakiet com.google.android.safetycenter.resources . Wybierz konfigurację SafetyCenterConfig . Ta konfiguracja wymaga, aby pakiet nakładki znajdował się na partycji product , system lub vendor . Producenci OEM GMS powinni skopiować dostarczony przez Google plik safety_center_config.xml i ograniczyć modyfikacje do tych dozwolonych w testach GTS . Definicja nakładki powinna być zbliżona do tej:

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

W przypadku urządzeń GMS, które nie są skonfigurowane do otrzymywania aktualizacji Mainline, wybierz pakiet com.android.safetycenter.resources . Nie ma konfiguracji nakładki, na którą można by kierować. Pakiet nakładki musi mieć nazwę pakietu com.google.android.safetycenter.resources .

Producenci OEM GMS powinni skopiować dostarczony przez Google plik safety_center_config.xml i ograniczyć modyfikacje do tych dozwolonych w testach GTS. Producenci OEM GMS muszą także zdefiniować ciągi znaków używane w konfiguracji XML.

Struktura pliku

Na wyższym poziomie plik safety_center_config.xml jest listą źródeł bezpieczeństwa. Te źródła bezpieczeństwa są zorganizowane w grupy umożliwiające zarządzanie sygnałami na ekranie Centrum bezpieczeństwa, na przykład Bezpieczeństwo aplikacji lub Blokada ekranu. Kolejność tej listy określa kolejność wyświetlania:

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

Plik konfiguracyjny Google

Plik konfiguracyjny AOSP znajduje się w packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml .

W systemie Android 13 plik konfiguracyjny Google to:

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

W systemie Android 14 plik konfiguracyjny Google to:

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

Dostosuj źródła Centrum bezpieczeństwa

Typy źródeł Centrum bezpieczeństwa

Źródła mogą być dynamiczne, dotyczące tylko problemów lub statyczne, w zależności od typu danych dostarczanych do Centrum bezpieczeństwa.

Źródła dynamiczne

Oznacz źródło bezpieczeństwa jako dynamic-safety-source jeśli może dostarczać dynamiczne dane do Centrum bezpieczeństwa zarówno dla kart wejściowych, jak i potencjalnych ostrzeżeń:

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

Źródła wyłącznie tematyczne

Oznacz źródło jako issue-only-safety-source jeśli nie ma powiązanego wpisu ustawień, ale nadal pojawiają się ostrzeżenia. Możesz podać tylko ostrzeżenia; podanie wpisu ustawień powoduje błąd:

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

Źródła statyczne

Oznacz źródło jako static-safety-source jeśli jest to wpis przekierowania bez danych dynamicznych:

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

Konfiguracja źródła Centrum bezpieczeństwa

W zależności od typu źródła Centrum bezpieczeństwa i innych niezmienników pola pliku konfiguracyjnego są opcjonalne, wymagane lub zabronione i można je dostosować:

  • id
    • Unikalny identyfikator źródła bezpieczeństwa musi być unikalny w całym pliku i musi składać się wyłącznie ze znaków alfabetu (az, AZ) oraz uwzględniać wielkość liter
    • Typ ciągu
    • Wymagane dla wszystkich typów źródeł bezpieczeństwa
  • packageName
    • Nazwa pakietu będącego właścicielem tego źródła bezpieczeństwa, na przykład com.google.android.permissioncontroller
    • Typ ciągu
    • Wymagane w przypadku dynamicznych i problemowych źródeł bezpieczeństwa
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa w systemie Android 13; w systemie Android 14 można to opcjonalnie ustawić tak, aby celowało w intentAction źródła w sposób jawny, a nie dorozumiany (więcej szczegółów można znaleźć w dokumentacji dotyczącej rozpoznawania intencji )
  • initialDisplayState
    • Sposób wyświetlania wpisu interfejsu użytkownika, gdy źródło bezpieczeństwa nie dostarcza żadnych danych
    • Typ wyliczeniowy reprezentowany jako ciąg znaków musi być jednym z następujących:
      • enabled (domyślnie, wyświetla się normalnie)
      • disabled (wyświetlacze są wyszarzone, nie można kliknąć)
      • hidden (nie wyświetla się)
    • Opcjonalnie dla dynamicznych źródeł bezpieczeństwa (domyślnie enabled )
    • Zabronione w przypadku wyłącznie awaryjnych i statycznych źródeł bezpieczeństwa
  • profile
    • Określa, czy to źródło bezpieczeństwa wchodzi w interakcję z zarządzanym profilem użytkownika
    • Typ wyliczeniowy reprezentowany jako ciąg znaków musi być jednym z następujących:
      • primary_profile_only (komunikuje się tylko z profilem nadrzędnym)
      • all_profiles (może także wchodzić w interakcję z zarządzanymi profilami)
    • Na all_profiles generowanych jest kilka wpisów interfejsu użytkownika (jeden dla profilu nadrzędnego i jeden dla każdego profilu zarządzanego); źródło bezpieczeństwa może dostarczać różne dane dla każdego profilu
    • Wymagane w przypadku wszystkich źródeł bezpieczeństwa
  • searchTerms
    • Lista wyszukiwanych haseł, które są powiązane z wpisem Centrum bezpieczeństwa podczas korzystania z wyszukiwania w aplikacji Ustawienia
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_search_terms
    • Opcjonalnie dla dynamicznych i statycznych źródeł bezpieczeństwa (domyślnie nie ma wyszukiwanych haseł)
    • Zabronione w przypadku wyłącznie awaryjnych źródeł bezpieczeństwa
  • title
    • Domyślny tytuł wpisu interfejsu użytkownika, używany, gdy źródło nie dostarcza dynamicznie żadnych danych
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_title
    • Wymagane w przypadku dynamicznych i statycznych źródeł bezpieczeństwa (chyba że initialDisplayState="hidden" bez searchTerms )
    • Zabronione w przypadku wyłącznie awaryjnych źródeł bezpieczeństwa
  • titleForWork
    • Domyślny tytuł wpisu interfejsu użytkownika dla profilu zarządzanego, który jest używany, gdy źródło nie dostarcza dynamicznie danych
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_title_for_work
    • Wymagane w przypadku dynamicznych i statycznych źródeł bezpieczeństwa, które mają określony profile="all_profiles" (chyba że initialDisplayState="hidden" bez searchTerms )
    • Zabronione w przypadku źródeł bezpieczeństwa przeznaczonych wyłącznie do emisji lub źródeł z profile="primary_profile_only"
  • summary
    • Domyślne podsumowanie wpisu interfejsu użytkownika (jest to dłuższy opis tekstowy wyświetlany pod tytułem), używane, gdy źródło nie dostarcza danych dynamicznie
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_summary
    • Opcjonalnie dla statycznych źródeł bezpieczeństwa (wartość domyślna to brak podsumowania)
    • Wymagane w przypadku dynamicznych źródeł bezpieczeństwa (chyba że initialDisplayState jest hidden )
    • Zabronione w przypadku wyłącznie awaryjnych źródeł bezpieczeństwa
  • intentAction
    • Akcja wyzwalana po kliknięciu wpisu interfejsu użytkownika
    • Typ ciągu, na przykład com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS lub identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_intent_action
    • Jeśli ta zamierzona akcja nie zostanie rozwiązana dla danej packageName (jeśli istnieje), wpis interfejsu użytkownika zachowuje się w taki sam sposób, jak w przypadku initialDisplayState="disabled"
    • Wymagane w przypadku statycznych źródeł bezpieczeństwa i dynamic źródeł bezpieczeństwa, które mają initialDisplayState="enabled"
    • Zabronione w przypadku wyłącznie awaryjnych źródeł bezpieczeństwa
  • maxSeverityLevel
    • Maksymalny poziom ważności, jaki może zapewnić to źródło Centrum bezpieczeństwa
    • Liczba całkowita reprezentowana jako ciąg znaków, na przykład 300
    • Opcjonalne dla dynamicznych i wyłącznie problemowych źródeł bezpieczeństwa (domyślnie nie ma wartości maksymalnej)
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa
  • loggingAllowed
    • Czy Centrum bezpieczeństwa może rejestrować interakcje lub dane powiązane z tym źródłem
    • Wartość logiczna reprezentowana jako ciąg znaków, na przykład false
    • Opcjonalne dla dynamicznych i problematycznych źródeł bezpieczeństwa (wartość domyślna to true )
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa
  • refreshOnPageOpenAllowed
    • Określa, czy po otwarciu ekranu Centrum bezpieczeństwa należy wysłać sygnał do źródła bezpieczeństwa w celu odświeżenia danych
    • Wartość logiczna reprezentowana jako ciąg znaków, na przykład true
    • Opcjonalne dla dynamicznych i wyłącznie problematycznych źródeł bezpieczeństwa (wartość domyślna to false )
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa
  • notificationsAllowed (od Androida 14)
    • Czy źródło bezpieczeństwa może opcjonalnie udostępniać powiadomienie podczas zgłaszania problemu
    • Wartość logiczna reprezentowana jako ciąg znaków, na przykład true
    • Opcjonalne dla dynamicznych i wyłącznie problematycznych źródeł bezpieczeństwa (wartość domyślna to false )
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa
  • deduplicationGroup (począwszy od Androida 14)
    • Potencjalny unikalny identyfikator, którego można użyć do deduplikacji problemów pochodzących z różnych źródeł. Źródła w tej samej grupie deduplikacji mogą wysyłać problemy z opcjonalnym identyfikatorem deduplikacji. Problemy z tym samym identyfikatorem deduplikacji zostaną wyświetlone w interfejsie użytkownika tylko raz, nawet jeśli wysyła je wiele źródeł.
    • Typ ciągu
    • Opcjonalnie w przypadku dynamicznych i wyłącznie problematycznych źródeł bezpieczeństwa (domyślnie brak deduplikacji)
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa
  • packageCertificateHashes (począwszy od Androida 14)
    • Rozdzielana przecinkami lista skrótów certyfikatów dla podanej packageName . Jeśli ta opcja jest ustawiona, ze względów bezpieczeństwa podczas interakcji ze źródłem bezpieczeństwa zostanie przeprowadzona kontrola certyfikatu względem danego packageCertificateHashes dla danej packageName .
    • Typ ciągu
    • Opcjonalne dla dynamicznych i wyłącznie wydających źródeł bezpieczeństwa (domyślnie brak sprawdzania certyfikatów)
    • Zabronione w przypadku statycznych źródeł bezpieczeństwa

Dostosuj grupy źródeł Centrum bezpieczeństwa

Źródła Centrum bezpieczeństwa muszą znajdować się w grupie źródeł Centrum bezpieczeństwa. Każda grupa źródłowa jest wyświetlana w interfejsie użytkownika w kolejności, w jakiej grupy źródłowe są wymienione w pliku. Każde źródło jest wyświetlane w grupie w kolejności, w jakiej źródła są wymienione w pliku. Jeśli grupa zawiera jedno źródło bezpieczeństwa, jest ono wyświetlane jako pojedynczy wpis, a nie grupa.

Konfiguracja grupy źródeł Centrum bezpieczeństwa

Użyj następujących zmiennych, aby dostosować grupy źródłowe Centrum bezpieczeństwa:

  • id
    • Unikalny identyfikator grupy źródeł bezpieczeństwa; musi być unikalny w całym pliku
    • Typ ciągu
    • Wymagany
  • title
    • Tytuł grupy w interfejsie użytkownika
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_title
    • Wymagane, jeśli w grupie znajduje się co najmniej jedno dynamiczne lub statyczne źródło bezpieczeństwa (tzn. grupa nie jest type="hidden" )
  • summary
    • Krótki opis grupy w interfejsie użytkownika, wyświetlany pod tytułem. Wyświetlane w określonych warunkach, zazwyczaj gdy nie podano danych; w przeciwnym razie podsumowanie obliczane jest na podstawie danych dostarczonych przez źródła w ramach grupy.
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_summary
    • Opcjonalne (domyślnie nie ma podsumowania)
  • statelessIconType
    • Typ ikony wyświetlany dla grupy, gdy źródła bezpieczeństwa nie dostarczają żadnego stanu, np. wpisy statyczne
    • Typ wyliczeniowy reprezentowany jako ciąg znaków, który musi mieć wartość none lub privacy (typ ikony prywatności)
    • Opcjonalne (wartość domyślna to none )
  • type (począwszy od Androida 14)
    • Jawny typ określający sposób interakcji tej grupy z Centrum bezpieczeństwa
    • Typ wyliczeniowy reprezentowany jako ciąg znaków musi być jednym z następujących:
      • stateful (wyświetla i wpływa na ogólny stan Centrum bezpieczeństwa)
      • stateless (wyświetla i nie ma wpływu na ogólny stan Centrum bezpieczeństwa)
      • hidden (nie jest wyświetlany, wszystkie źródła muszą dotyczyć tylko wydania)
    • Opcjonalne, domyślnie wywnioskowane przy użyciu źródeł bezpieczeństwa zawartych w grupie, a także summary i statelessIconType . Jeśli type jest określony, wymuszane są dodatkowe niezmienniki, aby upewnić się, że jest on zgodny ze źródłami napotkanymi w grupie (na przykład grupa nie może zostać hidden , jeśli zawiera wpisy widoczne dla użytkownika)

Centrum bezpieczeństwa pobiera typy grup

Grupy źródłowe Centrum bezpieczeństwa są klasyfikowane jako stanowe, bezstanowe lub ukryte na podstawie stanu niektórych pól.

Grupa stanowa

Grupa posiadająca zarówno tytuł, jak i podsumowanie lub stateLessIconType="privacy" jest uważana za stanową i wpływa na ogólny stan Centrum bezpieczeństwa:

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

W Androidzie 13 taka grupa będzie wyświetlana jako zwijany wpis w interfejsie użytkownika. W Androidzie 14 wyświetli się jako wpis z własnym statusem, który przekierowuje do podstrony.

Grupa bezpaństwowa

Grupa posiadająca tytuł, ale bez podsumowania i stateLessIconType="none" jest uważana za bezstanową i nie ma wpływu na ogólny stan Centrum bezpieczeństwa:

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

Taka grupa będzie wyświetlana jako sztywna lista wpisów w interfejsie użytkownika.

Ukryta grupa

Ukryta grupa zawiera wyłącznie źródła bezpieczeństwa dotyczące wyłącznie problemów i nie ma tytułu. Ukryte grupy nie są widoczne w interfejsie użytkownika:

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

Dane dynamiczne dla wpisu statycznego

Możesz wyświetlić dynamiczne źródło Centrum bezpieczeństwa jako wpis statyczny, co umożliwia wypychanie wpisów przekierowań w zależności od pewnych warunków i umożliwia dostosowywanie jego zawartości w czasie wykonywania. Zdefiniuj źródło dynamiczne w grupie bezstanowej, na przykład w zależności od wpisu informacji o zasadach pracy.

Ten przykład pokazuje dynamiczne źródło bezpieczeństwa, które nie dostarcza sygnału bezpieczeństwa, ponieważ znajduje się w grupie bezstanowej:

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

W tym przykładzie źródło może przesyłać tylko zielone karty ostrzegawcze i podawać nieokreślony status. Aby móc dostarczyć inne dane, źródło musi znajdować się w grupie stanowej.

Dostosuj ciągi znaków i pola nakładki

W przypadku urządzeń GMS, które nie są skonfigurowane do otrzymywania aktualizacji Mainline, zamiast nakładać cały plik konfiguracyjny, można nałożyć zasoby sześciociągowe, aby spełnić wszystkie potrzeby dostosowywania. Zasoby ciągu, które są nakładką, są wymienione w tabeli.

Zasób ciągu Opis
google_lock_screen_sources_summary Nałóż tę wartość, aby zdefiniować statyczne podsumowanie wyświetlane dla grupy AndroidLockScreenSources , gdy wszystkie źródła w grupie są w dobrym stanie (informacje lub nieokreślony poziom ważności). Domyślnie Centrum bezpieczeństwa wyświetla tytuły wszystkich źródeł w grupie połączone w formie podsumowania grupy.
google_biometrics_title Nałóż tę wartość, aby zdefiniować statyczny tytuł źródła biometrycznego należącego do pakietu com.android.settings , używanego, gdy źródło nie dostarcza żadnych danych dynamicznych. Nałóż to, jednocześnie nakładając tytuł dynamicznie dostarczony przez źródło w pakiecie com.android.settings . Jest to domyślnie ignorowane, ponieważ początkowy stan wyświetlania źródła jest hidden .
google_biometrics_summary Nałóż tę wartość, aby zdefiniować statyczne podsumowanie źródła biometrycznego należącego do pakietu com.android.settings , używanego, gdy źródło nie dostarcza żadnych danych dynamicznych. Jest to domyślnie ignorowane, ponieważ początkowy stan wyświetlania źródła jest hidden .
google_biometrics_search_terms Nałóż tę wartość, aby zdefiniować listę wyszukiwanych haseł dla źródła biometrycznego należącego do pakietu com.android.settings .
google_biometrics_initial_display_state Nałóż tę wartość, aby wyświetlić wpis interfejsu użytkownika dla źródła biometrycznego należącego do pakietu com.android.settings , gdy źródło nie dostarcza żadnych danych dynamicznych. Wartość domyślna jest hidden .
google_security_updates_intent Nałóż tę wartość, aby zmienić cel niezbędny do otwarcia działania umożliwiającego użytkownikowi sprawdzenie i zainstalowanie aktualizacji zabezpieczeń. To zamierzone działanie musi być powiązane z wyeksportowanym działaniem. Wartość domyślna to android.settings.SYSTEM_UPDATE_SETTINGS .

Żadnych innych ciągów w pakiecie com.google.android.safetycenter.resources nie można nakładać.

W przypadku urządzeń AOSP wszystkie zasoby w pakiecie com.android.safetycenter.resources można nakładać bez ograniczeń co do zawartości.

W przypadku urządzeń GMS, które nie są skonfigurowane do otrzymywania aktualizacji Mainline, utwórz pakiet com.google.android.safetycenter.resources zastępując lub nakładając na com.android.safetycenter.resources , definiując wszystkie ciągi oczekiwane w testach GTS.

Te ciągi to:

  • 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

Wymagania dotyczące dostosowywania

Wymagania dotyczące formatu pliku

Plik konfiguracyjny musi być plikiem XML i mieć format opisany w temacie Aktualizacja pliku konfiguracyjnego . Plik musi znajdować się w folderze raw . Musi spełniać niezmienniki opisane w grupach Dostosuj źródła bezpieczeństwa i Dostosuj źródła bezpieczeństwa . Jeśli plik konfiguracyjny nie jest poprawnie utworzony zgodnie z powyższymi wymaganiami, funkcja jest całkowicie wyłączona. Analizowanie tego pliku jest również wspierane przez testy CTS i GTS, które mogą zapewnić dodatkowy kontekst w przypadku, gdy plik nie jest prawidłowo utworzony (oprócz dzienników urządzenia logcat ).

Urządzenia usług Google

Na urządzeniach GMS na ten plik nakładane są pewne ograniczenia. Potwierdzają to testy GTS .

Urządzenia AOSP

Na urządzeniach AOSP plik konfiguracyjny musi być dobrze utworzony i przejść testy CTS dla Centrum Bezpieczeństwa. Testy sprawdzają, czy plik jest dobrze uformowany. Urządzenia GMS również muszą przejść te testy.