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 )
- Nazwa pakietu będącego właścicielem tego źródła bezpieczeństwa, na przykład
-
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"
bezsearchTerms
) - 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 żeinitialDisplayState="hidden"
bezsearchTerms
) - 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
jesthidden
) - 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 przypadkuinitialDisplayState="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 danegopackageCertificateHashes
dla danejpackageName
. - 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
- Rozdzielana przecinkami lista skrótów certyfikatów dla podanej
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
lubprivacy
(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
istatelessIconType
. Jeślitype
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.