Włączanie i wyłączanie Centrum bezpieczeństwa
Aby włączyć lub wyłączyć Centrum bezpieczeństwa, użyj nakładalnego pola logicznego config_enableSafetyCenter
w pliku frameworks/base/core/res/res/values/config.xml
.
Centrum bezpieczeństwa jest domyślnie obsługiwane na większości urządzeń, np. na telefonach i tabletach. W niektórych formatach Centrum bezpieczeństwa jest domyślnie wyłączone, na przykład na urządzeniach 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 wartość config_enableSafetyCenter
na true
. Jeśli nie chcesz korzystać z 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 strony Bezpieczeństwo i prywatność powoduje otwarcie aplikacji Ustawienia. Każda próba interakcji z interfejsami API jest ignorowana lub zwraca wartość domyślną. Powiązany kafelek Szybkich ustawień i element w Ustawieniach są też widoczne lub ukryte w zależności od tego, czy Centrum bezpieczeństwa jest włączone.
Flaga DeviceConfig
Oprócz włączania Centrum bezpieczeństwa za pomocą konfiguracji config_enableSafetyCenter
DeviceConfig
flaga (safety_center_is_enabled
) służy do zdalnego włączania i wyłączania Centrum bezpieczeństwa.
W Androidzie 14 i nowszych nie musisz nic robić, ponieważ ten parametr jest domyślnie ustawiony na true
.
W Androidzie 13 Centrum bezpieczeństwa jest domyślnie wyłączone po stronie serwera i włączone za pomocą listy dozwolonych za pomocą tego parametru. Prześlij odciski palców urządzenia i skontaktuj się z osobą kontaktową ds. obsługi klienta, aby dodać urządzenie do listy dozwolonych. Pamiętaj, że do dodania do listy dozwolonych wymagana jest wersja główna M-2022-11
lub nowsza.
W przypadku lokalnego tworzenia 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
Wynik zwróci, czy Centrum bezpieczeństwa jest prawidłowo włączone na urządzeniu.
Aktualizowanie pliku konfiguracji
Aby zmodyfikować zawartość ekranu Centrum bezpieczeństwa, użyj pliku konfiguracji safety_center_config.xml
. Możesz nałożyć ten plik, jeśli spełniasz wymagania dotyczące personalizacji.
Przesłonięcie pliku konfiguracji
Aby nałożyć plik safety_center_config.xml
, zapoznaj się z artykułem Zmienianie wartości zasobów aplikacji w czasie wykonywania, w którym znajdziesz informacje o modyfikowaniu nakładek zasobów w czasie wykonywania.
W Androidzie 14 musisz zastosować nakładkę do pliku res/raw-v34/safety_center_config.xml
, a nie do pliku res/raw/safety_center_config.xml
, ponieważ ten pierwszy ma pierwszeństwo (dotyczy to też innych plików, które są ograniczone do v34
, np. res/values-v34/strings.xml
). Pakiet nakładki musi mieć minimalną wersję pakietu Android SDK niższą niż 34
, w przeciwnym razie podczas optymalizacji może zostać usunięty ogranicznik v34
.
Pamiętaj też, aby używać nakładki statycznej, ponieważ ta wartość jest wczytywana w okresie uruchamiania.
W przypadku urządzeń z Projektu Android Open Source (AOSP) kieruj się na pakiet com.android.safetycenter.resources
. Nie ma konfiguracji nakładki do użycia. Wszystkie zasoby można nakładać na siebie bez ograniczeń dotyczących treści.
W przypadku urządzeń GMS skonfigurowanych do otrzymywania aktualizacji Mainline kieruj się na pakiet com.google.android.safetycenter.resources
. Kieruj na konfigurację
SafetyCenterConfig
. Ta konfiguracja wymaga, aby pakiet nakładki znajdował się na partycji product
, system
lub vendor
. Producenci OEM GMS powinni skopiować safety_center_config.xml
plik dostarczony przez Google i ograniczyć zmiany do tych dozwolonych przez testy GTS. Definicja nakładki powinna wyglądać mniej więcej tak:
<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, kieruj na pakiet com.android.safetycenter.resources
. Nie ma konfiguracji nakładki docelowej. Pakiet nakładki musi używać nazwy pakietu com.google.android.safetycenter.resources
.
Producenci OEM GMS powinni skopiować plik safety_center_config.xml
dostarczony przez Google i ograniczyć modyfikacje do tych dozwolonych przez testy GTS. Producenci OEM GMS muszą też zdefiniować ciągi znaków używane w konfiguracji XML.
Struktura pliku
Ogólnie rzecz biorąc, plik safety_center_config.xml
to lista źródeł bezpieczeństwa. Te źródła bezpieczeństwa są uporządkowane w grupy, aby można było nimi zarządzać na ekranie Centrum bezpieczeństwa, na przykład w przypadku Bezpieczeństwa aplikacji lub Blokady ekranu. Kolejność na tej liście 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 konfiguracji Google
Plik konfiguracji AOSP znajduje się w folderze packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml
.
W Androidzie 13 plik konfiguracji Google znajduje się w miejscu:
<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 Androidzie 14 plik konfiguracji Google ma następującą lokalizację:
<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>
W Androidzie 15 plik konfiguracji Google ma następującą lokalizację:
<safety-center-config>
<safety-sources-config>
<safety-sources-group
id="GoogleAppSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
<dynamic-safety-source
id="GooglePlayProtect"
packageName="com.android.vending"
profile="all_profiles"
intentAction="com.google.android.finsky.PLAY_PROTECT"
title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
deduplicationGroup="AppSecurity"/>
<issue-only-safety-source
id="GoogleAppProtectionService"
packageName="com.google.android.odad"
profile="primary_profile_only"
loggingAllowed="false"
deduplicationGroup="AppSecurity"/>
</safety-sources-group>
<safety-sources-group
id="AndroidLockScreenSources"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
<dynamic-safety-source
id="AndroidLockScreen"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
initialDisplayState="disabled"
notificationsAllowed="true"
maxSeverityLevel="300"/>
<dynamic-safety-source
id="AndroidBiometrics"
packageName="com.android.settings"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
maxSeverityLevel="0"/>
<dynamic-safety-source
id="GoogleAutoLock"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
maxSeverityLevel="0"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"/>
</safety-sources-group>
<safety-sources-group
id="GoogleAccountsSources"
title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
<dynamic-safety-source
id="GoogleSecurityCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="true"/>
<dynamic-safety-source
id="GooglePasswordCheckup"
packageName="com.google.android.gms"
profile="all_profiles"
title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_private_profile"
searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
initialDisplayState="hidden"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
refreshOnPageOpenAllowed="false"/>
</safety-sources-group>
<safety-sources-group
id="GoogleDeviceFinderSources"
title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
<dynamic-safety-source
id="GoogleFindMyDevice"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
<dynamic-safety-source
id="GoogleRogueTag"
packageName="com.google.android.gms"
profile="primary_profile_only"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
initialDisplayState="hidden"/>
</safety-sources-group>
<safety-sources-group
id="GoogleUpdateSources"
title="@com.google.android.safetycenter.resources:string/google_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
<dynamic-safety-source
id="GoogleSecurityUpdates"
packageName="com.google.android.gms"
profile="primary_profile_only"
intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
notificationsAllowed="true"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
<dynamic-safety-source
id="GooglePlaySystemUpdate"
packageName="com.android.vending"
profile="primary_profile_only"
intentAction="android.settings.MODULE_UPDATE_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
notificationsAllowed="true"
deduplicationGroup="AccountRequired"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
<dynamic-safety-source
id="GoogleBackupAndRestore"
packageName="com.google.android.gms"
profile="primary_profile_only"
initialDisplayState="hidden"
title="@com.google.android.safetycenter.resources:string/google_backup_title"
packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
</safety-sources-group>
<safety-sources-group
id="AndroidCellularNetworkSecuritySources"
title="@com.google.android.safetycenter.resources:string/google_cellular_network_security_title"
summary="@com.google.android.safetycenter.resources:string/google_cellular_network_security_summary">
<dynamic-safety-source
id="AndroidCellularNetworkSecurity"
packageName="com.android.phone"
profile="primary_profile_only"
notificationsAllowed="true"
initialDisplayState="hidden"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySources"
title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary">
<static-safety-source
id="AndroidPermissionManager"
profile="primary_profile_only"
intentAction="android.intent.action.MANAGE_PERMISSIONS"
title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
<static-safety-source
id="GoogleAdsIdentity"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
<dynamic-safety-source
id="AndroidHealthConnect"
profile="primary_profile_only"
packageName="com.google.android.healthconnect.controller"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="false"
title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
<dynamic-safety-source
id="AndroidPrivacyAppDataSharingUpdates"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"
title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
<static-safety-source
id="AndroidPrivacyControls"
profile="primary_profile_only"
intentAction="android.settings.PRIVACY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
<static-safety-source
id="GoogleActivityControls"
profile="all_profiles"
packageName="com.google.android.gms"
intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_private_profile"
summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
<issue-only-safety-source
id="AndroidAccessibility"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidNotificationListener"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidBackgroundLocation"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
<issue-only-safety-source
id="AndroidPermissionAutoRevoke"
packageName="com.google.android.permissioncontroller"
profile="all_profiles"
notificationsAllowed="true"
refreshOnPageOpenAllowed="true"/>
</safety-sources-group>
<safety-sources-group
id="AndroidPrivacySourcesAdditional"
title="@com.google.android.safetycenter.resources:string/google_privacy_additional_title">
<static-safety-source
id="AndroidPermissionUsage"
profile="primary_profile_only"
intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
<dynamic-safety-source
id="AndroidPrivateSpace"
packageName="com.android.settings"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_private_space_title"
summary="@com.google.android.safetycenter.resources:string/google_private_space_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_private_space_search_terms"
initialDisplayState="hidden"
maxSeverityLevel="0"/>
</safety-sources-group>
<safety-sources-group
id="AndroidAdvancedSources"
title="@com.google.android.safetycenter.resources:string/google_advanced_title">
<dynamic-safety-source
id="AndroidWorkPolicyInfo"
packageName="com.google.android.permissioncontroller"
profile="primary_profile_only"
title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
initialDisplayState="hidden"
refreshOnPageOpenAllowed="true"/>
<static-safety-source
id="AndroidMoreSettings"
profile="primary_profile_only"
intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
</safety-sources-group>
</safety-sources-config>
</safety-center-config>
Dostosowywanie źródeł Centrum bezpieczeństwa
Typy źródeł Centrum bezpieczeństwa
Źródła mogą być dynamiczne, tylko dotyczące problemów lub statyczne, w zależności od typu danych, które udostępniają Centrum bezpieczeństwa.
Źródła dynamiczne
Oznacz źródło bezpieczeństwa jako dynamic-safety-source
, jeśli może ono przekazywać dane dynamiczne do Centrum bezpieczeństwa, zarówno w przypadku wpisu, jak i potencjalnych kart 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 tylko z problemami
Oznacz źródło jako issue-only-safety-source
, jeśli nie ma powiązanego wpisu w ustawieniach, ale nadal wyświetlane są ostrzeżenia. Możesz podać tylko ostrzeżenia. Podanie wpisu w ustawieniach spowoduje 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 w Centrum bezpieczeństwa
W zależności od typu źródła w Centrum Bezpieczeństwa i innych niezmienników pola pliku konfiguracji są opcjonalne, wymagane lub zabronione i można je dostosować:
id
- Unikalny identyfikator źródła danych bezpieczeństwa. Musi być unikalny w całym pliku i składać się wyłącznie z liter (a–z, A–Z). Wielkość liter ma znaczenie.
- Typ ciągu znaków
- Wymagany w przypadku wszystkich typów źródeł danych o bezpieczeństwie
packageName
- Nazwa pakietu, który jest właścicielem tego źródła bezpieczeństwa, na przykład:
com.google.android.permissioncontroller
- Typ ciągu znaków
- Wymagane w przypadku dynamicznych i ograniczonych źródeł zabezpieczeń
- Zakaz dotyczy statycznych źródeł danych o bezpieczeństwie w Androidzie 13. W Androidzie 14 można opcjonalnie ustawić kierowanie na
intentAction
źródła danych (patrz dokumentacja dotycząca rozwiązywania intencji).
- Nazwa pakietu, który jest właścicielem tego źródła bezpieczeństwa, na przykład:
initialDisplayState
- Sposób wyświetlania pozycji w interfejsie, gdy źródło danych bezpieczeństwa nie udostępnia żadnych danych
- Typ wyliczenia reprezentowany jako ciąg znaków musi mieć jedną z tych wartości:
enabled
(wartość domyślna, wyświetlanie normalne)disabled
(wyświetla się w szarejowanej formie i nie można go kliknąć)hidden
(nie wyświetla się)
- Opcjonalne w przypadku dynamicznych źródeł zabezpieczeń (domyślnie
enabled
) - Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko informacje o problemach i statycznych źródeł bezpieczeństwa
profile
- Czy to źródło zabezpieczeń współdziała z zarządzanym profilem użytkownika
- Typ wyliczenia reprezentowany jako ciąg znaków musi mieć jedną z tych wartości:
primary_profile_only
(działa tylko z rodzicem profilu)all_profiles
(może też wchodzić w interakcje z profilami zarządzanymi, a od Androida 15 także z profilem prywatnym)
- W przypadku
all_profiles
generowane są różne wpisy interfejsu (jeden dla profilu nadrzędnego i jeden dla każdego profilu zarządzanego); źródło bezpieczeństwa może zawierać różne dane dla każdego profilu. - Wymagany w przypadku wszystkich źródeł informacji o bezpieczeństwie
searchTerms
- Lista wyszukiwanych haseł, które powiązane są z poszczególnymi wpisami w Centrum bezpieczeństwa, gdy korzystasz z wyszukiwarki w aplikacji Ustawienia
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_search_terms
- Opcjonalne w przypadku dynamicznych i statycznych źródeł bezpieczeństwa (domyślnie brak haseł wyszukiwania).
- Zabronione w przypadku źródeł bezpieczeństwa, które zawierają tylko informacje o problemach
title
- Domyślny tytuł elementu interfejsu użytkownika, używany, gdy źródło nie udostępnia żadnych danych dynamicznie
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_title
- Wymagane w przypadku dynamicznych i statycznych źródeł bezpieczeństwa (chyba że
initialDisplayState="hidden"
nie masearchTerms
). - Zabronione w przypadku źródeł bezpieczeństwa, które zawierają tylko informacje o problemach
titleForWork
- Domyślny tytuł pozycji interfejsu użytkownika dla profilu zarządzanego, który jest używany, gdy dane nie są dostarczane dynamicznie przez źródło
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_title_for_work
- Wymagany w przypadku dynamicznych i statycznych źródeł danych o bezpieczeństwie, które mają określone wartości właściwości
profile="all_profiles"
(chyba żeinitialDisplayState="hidden"
nie ma wartościsearchTerms
). - Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko informacje o problemach lub
profile="primary_profile_only"
summary
- Domyślne podsumowanie wpisu w interfejsie (dłuższy tekst opisowy wyświetlany pod tytułem), używane, gdy dane nie są dostarczane dynamicznie przez źródło
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_summary
- Opcjonalne w przypadku statycznych źródeł bezpieczeństwa (domyślnie brak podsumowania)
- Wymagany w przypadku dynamicznych źródeł zabezpieczeń (chyba że
initialDisplayState
tohidden
). - Zabronione w przypadku źródeł bezpieczeństwa, które zawierają tylko informacje o problemach
intentAction
- Działanie, które ma zostać wykonane po kliknięciu elementu interfejsu
- Typ ciągu znaków, na przykład
com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS
, lub identyfikator zasobu reprezentowany jako pełna nazwa zasobu, na przykład@package:string/my_intent_action
- Jeśli działanie związane z zamierzaniem nie jest dostępne w przypadku danego
packageName
(jeśli występuje), element interfejsu użytkownika działa tak samo jak w przypadkuinitialDisplayState="disabled"
- Wymagane w przypadku statycznych źródeł zabezpieczeń i
dynamic
źródeł zabezpieczeń, które mająinitialDisplayState="enabled"
- Zabronione w przypadku źródeł bezpieczeństwa, które zawierają tylko informacje o problemach
maxSeverityLevel
- Maksymalny poziom powagi, który może podać ta usługa źródłowa w Centrum bezpieczeństwa
- Liczba całkowita jako ciąg znaków, np.
300
- Opcjonalne w przypadku dynamicznych i ograniczonych do problemów źródeł zabezpieczeń (domyślnie brak maksymalnej wartości)
- Zabronione w przypadku statycznych źródeł bezpieczeństwa
loggingAllowed
- czy Centrum bezpieczeństwa może rejestrować interakcje lub dane związane z tym źródłem;
- Wartość logiczna reprezentowana jako ciąg znaków, np.
false
- Opcjonalnie w przypadku dynamicznych źródeł bezpieczeństwa i źródeł bezpieczeństwa tylko w przypadku problemów (domyślnie
true
) - Zabronione w przypadku statycznych źródeł bezpieczeństwa
refreshOnPageOpenAllowed
- czy sygnał powinien być wysyłany do źródła bezpieczeństwa w celu odświeżenia danych po otwarciu ekranu Centrum bezpieczeństwa.
- Wartość logiczna reprezentowana jako ciąg znaków, np.
true
- Opcjonalnie w przypadku dynamicznych źródeł bezpieczeństwa i źródeł bezpieczeństwa tylko w przypadku problemów (domyślnie
false
) - Zabronione w przypadku statycznych źródeł bezpieczeństwa
notificationsAllowed
(od Androida 14)- Czy źródło informacji o bezpieczeństwie może opcjonalnie wysłać powiadomienie podczas zgłaszania problemu
- Wartość logiczna reprezentowana jako ciąg znaków, np.
true
- Opcjonalnie w przypadku dynamicznych źródeł bezpieczeństwa i źródeł bezpieczeństwa tylko w przypadku problemów (domyślnie
false
) - Zabronione w przypadku statycznych źródeł bezpieczeństwa
deduplicationGroup
(od Androida 14)- Potencjalny niepowtarzalny identyfikator, który może służyć do usuwania duplikatów problemów pochodzących z różnych źródeł. Źródła w ramach tej samej grupy deduplikacji mogą wysyłać problemy z opcjonalnym identyfikatorem deduplikacji. Problemy z tym samym identyfikatorem deduplikacji będą wyświetlane tylko raz w interfejsie, nawet jeśli są wysyłane przez wiele źródeł.
- Typ ciągu znaków
- Opcjonalne w przypadku dynamicznych źródeł zabezpieczeń i źródeł zabezpieczeń dotyczących tylko problemów (domyślnie nie ma deduplikacji)
- Zabronione w przypadku statycznych źródeł bezpieczeństwa
packageCertificateHashes
(od Androida 14)- Lista wartości skrótu certyfikatu rozdzielona przecinkami dla danego
packageName
. Jeśli to ustawienie jest włączone, sprawdzenie certyfikatu zostanie wykonane dla danegopackageCertificateHashes
dla danegopackageName
podczas interakcji ze źródłem bezpieczeństwa ze względów bezpieczeństwa. - Typ ciągu znaków
- Opcjonalne w przypadku źródeł bezpieczeństwa dynamicznego i źródeł bezpieczeństwa tylko w przypadku problemów (domyślnie nie ma sprawdzania certyfikatów)
- Niedozwolone w przypadku statycznych źródeł bezpieczeństwa
- Lista wartości skrótu certyfikatu rozdzielona przecinkami dla danego
titleForPrivateProfile
(od Androida 15)- Domyślny tytuł elementu interfejsu użytkownika dla profilu prywatnego, który jest używany, gdy dane nie są dostarczane dynamicznie przez źródło
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_title_for_private_profile
- Wymagany w przypadku dynamicznych i statycznych źródeł danych o bezpieczeństwie, które mają określone wartości właściwości
profile="all_profiles"
(chyba żeinitialDisplayState="hidden"
nie ma wartościsearchTerms
). - Zabronione w przypadku źródeł bezpieczeństwa zawierających tylko informacje o problemach lub
profile="primary_profile_only"
Dostosowywanie grup ź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ódeł jest wyświetlana w interfejsie w kolejności, w jakiej grupy źródeł są wymienione w pliku. Każde źródło wyświetla się w grupie w kolejności, w jakiej występuje w pliku. Jeśli grupa zawiera tylko 1 źródło informacji o bezpieczeństwie, jest wyświetlana jako pojedynczy wpis, a nie grupa.
Konfiguracja grupy źródeł Centrum bezpieczeństwa
Aby dostosować grupy źródeł Centrum bezpieczeństwa, użyj tych zmiennych:
id
- Unikalny identyfikator grupy źródeł informacji o bezpieczeństwie; musi być niepowtarzalny w całym pliku.
- Typ ciągu znaków
- Wymagane
title
- Tytuł grupy w interfejsie
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_title
- Wymagane, jeśli w grupie jest co najmniej 1 dynamiczne lub statyczne źródło zabezpieczeń (czyli grupa nie jest typu
type="hidden"
).
summary
- Krótki opis grupy w interfejsie użytkownika, wyświetlany pod tytułem. Wyświetlane w określonych warunkach, zwykle gdy nie są dostępne dane. W innych przypadkach podsumowanie jest obliczane na podstawie danych dostarczonych przez źródła w grupie.
- Identyfikator zasobu podany jako pełna nazwa zasobu, na przykład:
@package:string/my_summary
- Opcjonalnie (domyślnie brak podsumowania)
statelessIconType
- Typ ikony wyświetlanej dla grupy, gdy źródła danych bezpieczeństwa nie podają stanu, np. wpisy statyczne
- Typ enumeracji reprezentowany jako ciąg znaków, który musi być albo
none
, alboprivacy
(typ ikony prywatności) - Opcjonalne (wartość domyślna to
none
)
type
(od Androida 14)- Wyraźny typ określający sposób interakcji tej grupy z Centrum bezpieczeństwa
- Typ wyliczenia reprezentowany jako ciąg znaków musi mieć jedną z tych wartości:
stateful
(wyświetla i wpływa na ogólny stan Centrum bezpieczeństwa)stateless
(wyświetla się, ale nie wpływa na ogólny stan Safety Center)hidden
(nie wyświetla się, wszystkie źródła muszą być tylko problemowe)
- Opcjonalne, domyślnie wywnioskowane na podstawie źródeł bezpieczeństwa zawartych w grupie oraz
summary
istatelessIconType
. Jeśli opcjatype
jest określona, niektóre dodatkowe niezmienne wartości są wymuszane, aby zapewnić zgodność ze źródłami w grupie (na przykład grupa nie może byćhidden
, jeśli zawiera widoczne dla użytkownika wpisy).
Typy źródeł w Centrum bezpieczeństwa
Grupy źródeł Centrum bezpieczeństwa są klasyfikowane jako zależne od stanu, niezależne od stanu lub ukryte na podstawie stanu niektórych pól.
Grupa stanowa
Grupa, która ma zarówno tytuł, jak i podsumowanie, czyli 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 widoczna w interfejsie jako element, który można zwinąć. W Androidzie 14 będzie ona widoczna jako wpis z własnym stanem, który przekierowuje na podstronę.
Grupa bez stanu
Grupa, która ma tytuł, ale nie ma podsumowania, i stateLessIconType="none"
jest uważana za grupę bez stanu i nie wpływa 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 widoczna w interfejsie jako sztywna lista wpisów.
Ukryta grupa
Ukryta grupa zawiera tylko źródła zabezpieczeń dotyczące tylko problemów i nie ma tytułu. 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 w przypadku wpisu statycznego
Możesz wyświetlać dynamiczne źródło Centrum Bezpieczeństwa jako wpis statyczny, co umożliwia przesyłanie wpisów przekierowania w zależności od pewnych warunków i dostosowywanie ich treści w czasie wykonywania. W zależności od wpisu w informacjach o zasadach obowiązujących w firmie zdefiniuj źródło dynamiczne w grupie bezstanowej.
Ten przykład pokazuje dynamiczne źródło zabezpieczeń, które nie przekazuje 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 z ostrzeżeniem i przypisać stan nieokreślony. Aby można było podać inne dane, źródło musi znajdować się w grupie z stanem.
Dostosowywanie ciągów znaków i polów nakładek
W przypadku urządzeń GMS, które nie są skonfigurowane do otrzymywania aktualizacji Mainline, zamiast nakładania całego pliku konfiguracyjnego możesz nakładać 6 zasobów ciągu znaków, aby zaspokoić wszystkie potrzeby związane z dostosowywaniem. Zasoby napisów, które są nakładkami, są wymienione w tabeli.
Zasób tekstowy | Opis |
---|---|
google_lock_screen_sources_summary |
Nakładanie tej wartości służy do definiowania stałego podsumowania wyświetlanego w przypadku grupy AndroidLockScreenSources , gdy wszystkie źródła w tej grupie są w dobrym stanie (poziom informacji lub nieokreślony). Domyślnie Centrum bezpieczeństwa wyświetla tytuł wszystkich źródeł w grupie połączony jako podsumowanie grupy. |
google_biometrics_title |
Za pomocą tej wartości możesz zdefiniować tytuł statyczny źródła danych biometrycznych należącego do pakietu com.android.settings , który jest używany, gdy źródło nie udostępnia żadnych danych dynamicznych. Nakładaj go, gdy nakładasz tytuł dynamicznie udostępniany przez źródło w pakiecie com.android.settings . Domyślnie jest on ignorowany, ponieważ początkowy stan wyświetlania źródła to hidden . |
google_biometrics_summary |
Nakładanie tej wartości pozwala zdefiniować statyczne podsumowanie źródła danych biometrycznych należącego do używanego pakietu com.android.settings , gdy źródło nie udostępnia żadnych danych dynamicznych. Domyślnie jest on ignorowany, ponieważ początkowy stan wyświetlania źródła to hidden . |
google_biometrics_search_terms |
Użyj tej wartości, aby zdefiniować listę wyszukiwanych słów dla źródła danych biometrycznych należącego do pakietu com.android.settings . |
google_biometrics_initial_display_state |
Nakładanie tej wartości, aby wyświetlić element interfejsu użytkownika dla źródła danych biometrycznych należącego do pakietu com.android.settings , gdy źródło nie udostępnia żadnych danych dynamicznych. Wartością domyślną jest hidden . |
google_security_updates_intent |
Nakładanie tej wartości pozwala zmienić intencję potrzebną do otwarcia aktywności, która umożliwia użytkownikowi sprawdzenie i zainstalowanie aktualizacji zabezpieczeń. To działanie intencyjne musi być powiązane z wyeksportowaną aktywnością. Wartością domyślną jest android.settings.SYSTEM_UPDATE_SETTINGS . |
Żadne inne ciągi znaków w pakiecie com.google.android.safetycenter.resources
nie mogą być zastąpione.
W przypadku urządzeń AOSP wszystkie zasoby w pakiecie com.android.safetycenter.resources
można nakładać bez ograniczeń dotyczących treś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 com.android.safetycenter.resources
, definiując wszystkie ciągi znaków oczekiwane przez testy GTS.
Te ciągi znaków:
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 musi być zgodny z formatem opisanym w sekcji Aktualizowanie pliku konfiguracji. Plik musi znajdować się w folderze raw
. Musi on spełniać warunki niezmienne opisane w artykule Dostosowywanie źródeł Centrum bezpieczeństwa i Dostosowywanie grup źródeł Centrum bezpieczeństwa. Jeśli plik konfiguracji nie jest prawidłowo sformatowany zgodnie z wymaganiami podanymi powyżej, funkcja jest całkowicie wyłączona. Przetwarzanie tego pliku jest też obsługiwane przez testy CTS i GTS, które mogą dostarczyć dodatkowego kontekstu, jeśli plik jest źle sformatowany (oprócz logów urządzenia logcat).
Urządzenia z usługami Google
Na urządzeniach z GMS ten plik jest objęty pewnymi ograniczeniami. Jest to obsługiwane przez testy GTS.
Urządzenia AOSP
Na urządzeniach AOSP plik konfiguracji musi być poprawnie sformatowany i przejść testy CTS dotyczące SafetyCenter. Testy sprawdzają, czy plik jest poprawnie sformatowany. Urządzenia GMS muszą również przejść te testy.