Dostosuj Centrum bezpieczeństwa

Włączanie i wyłączanie Centrum bezpieczeństwa

Aby włączyć lub wyłączyć Centrum bezpieczeństwa, użyj nakładki config_enableSafetyCenter w polu wartości logicznej frameworks/base/core/res/res/values/config.xml. .

Na większości urządzeń Centrum bezpieczeństwa jest domyślnie obsługiwane, na przykład na telefonach. i tabletach. Na niektórych urządzeniach Centrum bezpieczeństwa jest domyślnie wyłączone. na przykład na urządzeniach z Androidem, 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 zapewnić obsługę Centrum bezpieczeństwa, ustaw config_enableSafetyCenter na true. Jeśli nie chcesz obsługiwać Centrum bezpieczeństwa. Ustaw tę wartość na false, aby je wyłączyć.

Gdy Centrum bezpieczeństwa jest wyłączone, każda próba przekierowania do Zamiast tego strona Prywatność otwiera aplikację Ustawienia. Każda próba interakcji z Interfejsy API są dyskretnie ignorowane lub zwracają wartość domyślną. Powiązana karta Szybkie Kafelek Ustawienia i wpis Ustawienia też są widoczne lub ukryte w zależności od tego, czy Centrum bezpieczeństwa jest włączone.

Flaga DeviceConfig

Oprócz włączenia Centrum bezpieczeństwa za pomocą interfejsu config_enableSafetyCenter konfiguracji, DeviceConfig. flaga (safety_center_is_enabled) służy do zdalnego włączania lub wyłączania funkcji bezpieczeństwa pomocy.

W Androidzie 14 i nowszych nie musisz nic robić. ponieważ ta flaga to domyślnie true.

Na Androidzie 13 Centrum bezpieczeństwa jest domyślnie wyłączone. po stronie serwera i włączone za pomocą tej flagi na liście dozwolonych. Prześlij swoje urządzenie odcisków cyfrowych i skontaktuj się z TAM, aby dodać je do listy dozwolonych. Pamiętaj, że Do listy dozwolonych należy dodać aplikację mainline w wersji M-2022-11 lub nowszej. Na potrzeby lokalnego programowania i testowania flagę można włączyć lub wyłączyć lokalnie (aż do ponownego uruchomienia) za pomocą polecenia adb. Aby na przykład 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

W danych wyjściowych pojawi się informacja, czy Centrum bezpieczeństwa jest prawidłowo włączone na urządzeniu.

Aktualizowanie pliku konfiguracji

Użyj pliku konfiguracji safety_center_config.xml, aby zmodyfikować zawartość ekranu Centrum bezpieczeństwa. Możesz nakładać ten plik, jeśli spełniasz wymagania Wymagania dotyczące dostosowywania

Nakładanie pliku konfiguracji

Aby nałożyć na plik safety_center_config.xml, zapoznaj się z sekcją Zmienianie wartości atrybutu zasoby aplikacji w czasie działania , aby uzyskać informacje na temat modyfikowania nakładek zasobów środowiska wykonawczego.

W Androidzie 14 nałóż res/raw-v34/safety_center_config.xml, a nie res/raw/safety_center_config.xml, ponieważ ma pierwszeństwo (również dotyczy innych plików ograniczonych do v34, np. res/values-v34/strings.xml). Pakiet nakładki musi mieć pakiet SDK o starszej wartości niż 34, w przeciwnym razie kwalifikator v34 może zostać pominięty podczas optymalizacji. Pamiętaj też o użyciu statycznej nakładki, ponieważ ta wartość jest ładowana podczas uruchamiania urządzenia obecnie się znajdujesz.

W przypadku urządzeń Android Open Source Project (AOSP) ustaw kierowanie na pakiet com.android.safetycenter.resources Nie ma konfiguracji nakładki, która: cel. Wszystkie zasoby można nałożyć bez ograniczeń na treść.

W przypadku urządzeń GMS skonfigurowanych do otrzymywania aktualizacji Mainline, ustaw kierowanie na pakiet com.google.android.safetycenter.resources. Kieruj na konfigurację SafetyCenterConfig Ta konfiguracja wymaga, aby pakiet nakładki był w partycję product, system lub vendor. OEM ds. produktów GMS powinni skopiować Dostarczone przez Google: safety_center_config.xml file i limit modyfikacji dopuszczonych przez GTS testów. Definicja nakładki powinien być podobny do tego:

<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, ustaw kierowanie na pakiet com.android.safetycenter.resources. Brak konfiguracji nakładki na które mają być kierowane reklamy. Pakiet nakładki musi używać nazwy pakietu com.google.android.safetycenter.resources

OEM firmy GMS powinien skopiować plik safety_center_config.xml udostępniony przez Google oraz ograniczania zmian dozwolonych w ramach testów GTS. OEM, firmy GMS, musi też określić ciągi tekstowe używane w konfiguracji XML.

Struktura pliku

Ogólnie plik safety_center_config.xml to lista zabezpieczeń źródeł. Te źródła bezpieczeństwa są zorganizowane w grupy i zarządzają sygnałami ekran Centrum bezpieczeństwa, na przykład Bezpieczeństwo aplikacji lub Blokada ekranu. Kolejność ta lista definiuje 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 konfiguracji Google

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

Na Androidzie 13 plik konfiguracji 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>

Na Androidzie 14 plik konfiguracji 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>

Dostosowywanie źródeł Centrum bezpieczeństwa

Typy źródeł Centrum bezpieczeństwa

Źródła mogą być dynamiczne, związane tylko z problemem lub statyczne, w zależności od typu danych i przekazywać je do Centrum bezpieczeństwa.

Źródła dynamiczne

Oznacz źródło bezpieczeństwa jako dynamic-safety-source, jeśli może ono dostarczać dane dynamiczne do Centrum bezpieczeństwa, zarówno ze względu na kartę wejściową, jak i ewentualne ostrzeżenia:

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

Oznacz źródło jako issue-only-safety-source, jeśli: brak powiązanych ustawień ale nadal będą pojawiać się ostrzeżenia. Możesz wyświetlać tylko ostrzeżenia. dostarczanie wpis ustawień powoduje wystąpienie błędu:

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

<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 niezmiennych konfiguracja są opcjonalne, wymagane lub zabronione i można je dostosować:

  • id
    • Unikalny identyfikator źródła bezpieczeństwa, musi być niepowtarzalny w całości i może się składać tylko z liter alfabetu (a–z, A–Z) oraz jest rozróżniana wielkość liter
    • Typ ciągu znaków
    • Wymagane w przypadku wszystkich typów źródeł bezpieczeństwa
  • packageName
    • Nazwa pakietu, do którego należy to źródło bezpieczeństwa, na przykład com.google.android.permissioncontroller
    • Typ ciągu znaków
    • Wymagane w przypadku źródeł bezpieczeństwa dynamicznych i stwarzających tylko problemy
    • Niedozwolone w przypadku źródeł bezpieczeństwa statycznego na Androidzie 13; na Androidzie 14 opcjonalnie można ustawić kierowanie na intentAction źródła wprost, a nie domyślnie (zob. zgodność z zamierzeniem dokumentacja ).
  • initialDisplayState
    • Jak wyświetla się wpis w interfejsie, gdy usługa bezpieczeństwa nie udostępnia żadnych danych źródło
    • Typ wyliczeniowy reprezentowany jako ciąg znaków, musi mieć jedną z tych wartości:
      • enabled (domyślny, wyświetla się normalnie)
      • disabled (wyświetla się wyszarzone, nie można ich kliknąć)
      • hidden (nie wyświetla się)
    • Opcjonalny w przypadku dynamicznych źródeł bezpieczeństwa (wartość domyślna to enabled)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznych i tylko problemów
  • profile
    • Określa, czy to źródło bezpieczeństwa wchodzi w interakcje z zarządzanym profilem użytkownika
    • Typ wyliczeniowy reprezentowany jako ciąg znaków, musi mieć jedną z tych wartości:
      • primary_profile_only (działa tylko z elementem nadrzędnym profilu)
      • all_profiles (może też wchodzić w interakcje z profilami zarządzanymi)
    • all_profiles wygenerowano kilka wpisów w interfejsie (jeden dla profilu nadrzędny i po jednym dla każdego profilu zarządzanego); źródło bezpieczeństwa może zapewnić różne dane dla każdego profilu,
    • Wymagane w przypadku wszystkich źródeł bezpieczeństwa
  • searchTerms
    • Lista wyszukiwanych haseł mapowanych na wpis Centrum bezpieczeństwa w przypadku użycia Wyszukaj w aplikacji Ustawienia
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_search_terms
    • Opcjonalne w przypadku dynamicznych i statycznych źródeł bezpieczeństwa (domyślnie jest wyłączone wyszukiwanie hasła)
    • Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko problem
  • title
    • Domyślny tytuł wpisu w interfejsie używany, gdy nie są dynamicznie dostarczane żadne dane według źródła
    • 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 źródeł bezpieczeństwa zawierających tylko problem
  • titleForWork
    • Domyślny tytuł wpisu w interfejsie dla profilu zarządzanego, który jest używany, gdy nie jest dynamicznie dostarczany przez źródło
    • 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 zawierają profile="all_profiles" (chyba że initialDisplayState="hidden" bez nie searchTerms).
    • Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko problem lub źródeł z profile="primary_profile_only"
  • summary
    • Domyślne podsumowanie wpisu w interfejsie (to jest dłuższy opis tekstowy) wyświetlane pod tytułem), używane, gdy dane nie są dostarczane dynamicznie przez źródło
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_summary
    • Opcjonalny w przypadku statycznych źródeł bezpieczeństwa (domyślnie jest to brak podsumowania)
    • Wymagane w przypadku dynamicznych źródeł bezpieczeństwa (chyba że atrybut initialDisplayState jest hidden).
    • Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko problem
  • intentAction
    • Działanie wywoływane po kliknięciu wpisu w interfejsie
    • Typ ciągu znaków, np. 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 to działanie intencji nie powiedzie się w przypadku danego elementu typu packageName (jeśli dowolne), wpis w interfejsie działa w taki sam sposób, initialDisplayState="disabled"
    • Wymagane w przypadku źródeł bezpieczeństwa statycznych i dynamic źródeł bezpieczeństwa, które zawiera initialDisplayState="enabled"
    • Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko problem
  • maxSeverityLevel
    • Maksymalny poziom ważności, który może zapewnić to źródło Centrum bezpieczeństwa
    • Liczba całkowita przedstawiona w formie ciągu znaków, np. 300
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (domyślnie jest maksimum)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego
  • loggingAllowed
    • czy Centrum bezpieczeństwa może rejestrować związane z tym interakcje lub dane. źródło
    • Wartość logiczna reprezentowana jako ciąg znaków, np. false
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (wartość domyślna to true)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego
  • refreshOnPageOpenAllowed
    • Określa, czy do źródła bezpieczeństwa ma zostać wysłany sygnał, aby odświeżyć dane po otwarciu ekranu Centrum bezpieczeństwa.
    • Wartość logiczna reprezentowana jako ciąg znaków, np. true
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (wartość domyślna to false)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego
  • notificationsAllowed (od Androida 14)
    • Określa, czy źródło zabezpieczeń może opcjonalnie dostarczyć powiadomienie, gdy zgłaszanie problemu
    • Wartość logiczna reprezentowana jako ciąg znaków, np. true
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (wartość domyślna to false)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego
  • deduplicationGroup (od Androida 14)
    • Potencjalny unikalny identyfikator, którego można używać do usuwania duplikatów problemów pochodzących z różnych źródeł. Źródła w ramach tej samej deduplikacji grupa może wysyłać problemy z opcjonalnym identyfikatorem deduplikacji. Problemy z ten sam identyfikator deduplikacji będzie wyświetlany w interfejsie tylko raz, nawet jeśli które wysyła je wiele źródeł.
    • Typ ciągu znaków
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (domyślnie jest deduplikacja)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego
  • packageCertificateHashes (od Androida 14)
    • Rozdzielona przecinkami lista haszy certyfikatów dla danego argumentu packageName Jeśli ta opcja jest ustawiona, certyfikat sprawdź zostanie wykonana względem danego packageCertificateHashes dla danego elementu packageName podczas interakcji ze źródłem bezpieczeństwa, dla: związane z bezpieczeństwem.
    • Typ ciągu znaków
    • Opcjonalne w przypadku dynamicznych i generujących tylko problemy źródeł bezpieczeństwa (domyślnie jest testy certyfikatów)
    • Zakazane w przypadku źródeł bezpieczeństwa statycznego

Dostosowywanie grup źródeł Centrum bezpieczeństwa

Źródła z Centrum bezpieczeństwa muszą należeć do grupy źródeł Centrum bezpieczeństwa. Każda grupa źródłowa jest wyświetlana w interfejsie w takiej kolejności, w jakiej podane w pliku. Każde źródło jest wyświetlane w grupie w takiej kolejności W pliku znajdziesz listę źródeł. Jeśli grupa zawiera 1 źródło bezpieczeństwa, jest wyświetlany jako pojedynczy wpis, a nie grupa.

Konfiguracja grupy źródeł Centrum bezpieczeństwa

Aby dostosować grupy źródłowe Centrum bezpieczeństwa, użyj tych zmiennych:

  • id
    • Unikalny identyfikator grupy źródeł bezpieczeństwa; musi być unikalna w cały plik
    • Typ ciągu znaków
    • Wymagane
  • title
    • Tytuł grupy w interfejsie
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_title
    • Wymagane, jeśli w aplikacji znajduje się co najmniej jedno dynamiczne lub statyczne źródło bezpieczeństwa grupa (tzn. nie należy do type="hidden")
  • summary
    • Krótki opis grupy w interfejsie wyświetlany pod tytułem. wyświetlane w określonych warunkach, zwykle wtedy, gdy dane nie są dostępne; w przeciwnym razie podsumowanie jest obliczane na podstawie danych dostarczonych przez źródeł w grupie.
    • Identyfikator zasobu reprezentowany jako w pełni kwalifikowana nazwa zasobu, na przykład @package:string/my_summary
    • Opcjonalne (domyślnie jest to brak podsumowania)
  • statelessIconType
    • Typ ikony wyświetlanej dla grupy, gdy zasada nie podaje stanu źródła bezpieczeństwa, na przykład wpisy statyczne,
    • Typ typu wyliczeniowego reprezentowany jako ciąg znaków none lub privacy (typ ikony prywatności)
    • Opcjonalny (wartość domyślna to none)
  • type (od Androida 14)
    • Jednoznaczny typ określający sposób interakcji tej grupy z Centrum bezpieczeństwa
    • Typ wyliczeniowy reprezentowany jako ciąg znaków, musi mieć jedną z tych wartości:
      • stateful (wyświetla ogólne Centrum bezpieczeństwa i przyczynia się do niego stan)
      • stateless (wyświetla się, ale nie wpływa na ogólne bezpieczeństwo) stan centrum)
      • hidden (nie wyświetla się, wszystkie źródła muszą być związane tylko z problemem)
    • Opcjonalna, ustalona domyślnie na podstawie źródeł bezpieczeństwa zawartych w a także summary i statelessIconType. Jeśli Parametr type jest określony, ale wymuszane są dodatkowe niezmienniki, aby upewnić się, że pasuje ono do źródeł w grupie (na przykład grupa nie może być hidden, jeśli zawiera wpisy widoczne dla użytkowników)

Typy grup źródeł Centrum bezpieczeństwa

Grupy źródłowe w Centrum bezpieczeństwa są klasyfikowane jako stanowe, bezstanowe lub ukryte zależnie od stanu określonych pól.

Grupa stanowa

Grupa, która ma zarówno tytuł, jak i podsumowanie, lub element stateLessIconType="privacy" to uznawane za stanowe przyczynia się do ogólnego stanu 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 się wyświetlać jako zwijana. w interfejsie użytkownika. W Androidzie 14 będzie ona widoczna jako wpis o własnym stanie, który przekierowuje do podstrony.

Grupa bezstanowa

Grupa, która ma tytuł, ale nie ma podsumowania, a stateLessIconType="none" to są uznawane za bezstanowe i nie wpływają 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 wyświetli się w interfejsie jako sztywna lista wpisów.

Grupa ukryta

Ukryta grupa zawiera tylko źródła bezpieczeństwa związane tylko z problemami i nie ma nazwy. Ukryte grupy nie są widoczne w interfejsie:

<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

Źródło dynamicznego Centrum bezpieczeństwa można wyświetlić jako wpis statyczny, co pozwala na przesuwanie wpisów przekierowania w zależności od pewnych warunków oraz umożliwia dostosowanie jej treść w czasie działania. Zdefiniuj źródło dynamiczne w grupie bezstanowej dla w zależności od wpisu z informacjami o zasadach służbowych.

Ten przykład pokazuje dynamiczne źródło bezpieczeństwa, które nie dostarcza sygnału bezpieczeństwa. ponieważ jest 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 przekazywać tylko zielone karty ostrzegawcze i dostarczać nieokreślony stan. Aby dostarczyć inne dane, źródło musi znajdować się w grupę stanową.

Dostosuj ciągi tekstowe i pola nakładki

W przypadku urządzeń GMS, które nie zostały skonfigurowane do otrzymywania aktualizacji Mainline, zamiast na cały plik konfiguracji, można dodać 6 zasobów łańcuchowych spełniają wszystkie wymagania w zakresie dostosowywania. Wyświetli się lista zasobów tekstowych, które są nakładane. w tabeli.

Zasób ciągu tekstowego Opis
google_lock_screen_sources_summary Nałóż tę wartość, aby zdefiniować statyczne podsumowanie wyświetlane grupę AndroidLockScreenSources, gdy wszystkie źródła w grupie grupa jest w dobrym stanie (informacja lub nieokreślona ważność); ). Domyślnie Centrum bezpieczeństwa wyświetla tytuły wszystkich źródeł w grupie połączonej jako podsumowanie dla grupy.
google_biometrics_title Nałóż tę wartość, aby zdefiniować statyczny tytuł źródła biometrycznego. należące do pakietu com.android.settings, używane, gdy nie ma źródło jest dostarczane przez źródło. Nakładaj je, gdy także nakładając się na tytuł dynamicznie udostępniany przez źródło w com.android.settings pakiet. Ta zasada jest domyślnie ignorowana. ponieważ początkowy stan wyświetlania dla źródła to hidden
google_biometrics_summary Nałóż tę wartość, aby zdefiniować statyczne podsumowanie danych biometrycznych. źródło należące do użytego pakietu com.android.settings . Jest to ignorowane przez domyślnie, ponieważ początkowy stan wyświetlania dla źródła to hidden
google_biometrics_search_terms Nałóż tę wartość, aby zdefiniować listę wyszukiwanych haseł na potrzeby funkcji biometrycznej. źródło należy do pakietu com.android.settings.
google_biometrics_initial_display_state Nałóż tę wartość, aby wyświetlić wpis w interfejsie dotyczący należącego do źródła biometrycznego przez pakiet com.android.settings, gdy nie ma danych dynamicznych jest podana przez źródło. Wartość domyślna to hidden
google_security_updates_intent Nałóż tę wartość, aby zmienić intencję niezbędną do otwarcia aktywności który umożliwia użytkownikowi sprawdzanie i instalowanie aktualizacji zabezpieczeń. Ten działanie intencji musi być powiązane z wyeksportowaną aktywnością. Wartość domyślna to android.settings.SYSTEM_UPDATE_SETTINGS

Żadne inne ciągi w pakiecie com.google.android.safetycenter.resources nie są które można nakładać.

W przypadku urządzeń AOSP wszystkie zasoby w regionie com.android.safetycenter.resources można nakładać bez ograniczeń na treść.

W przypadku urządzeń GMS, które nie są skonfigurowane do otrzymywania aktualizacji Mainline, utwórz com.google.android.safetycenter.resources pakiet zastępujący lub nakładający się com.android.safetycenter.resources definiują wszystkie ciągi, które ma zawierać parametr testów 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 konfiguracji musi być plikiem XML i mieć format opisany w Zaktualizuj plik konfiguracji. Plik musi znajdować się w Folder raw. Musi spełniać niezmienniki opisane w Dostosowywanie Centrum bezpieczeństwa oraz Dostosowywanie źródeł Centrum bezpieczeństwa grup. Jeśli zgodnie z powyższymi wymaganiami, jest całkowicie wyłączona. Analiza tego pliku korzysta też z CTS i GTS testu, który może dostarczyć dodatkowy kontekst, jeśli plik jest zniekształcony (w góra logcat. dzienników urządzenia).

Urządzenia w usługach Google

Na urządzenia GMS obowiązują pewne ograniczenia dotyczące tego pliku. Ta funkcja jest wspierana przez GTS .

Urządzenia AOSP

Na urządzeniach AOSP plik konfiguracji musi mieć prawidłowy format i przekazywać CTS testy pod kątem bezpieczeństwa. pomocy. Testy mają na celu sprawdzenie, czy plik jest poprawnie sformatowany. Urządzenia GMS muszą również zaliczą te testy.