Passen Sie das Sicherheitscenter an

Sicherheitscenter aktivieren oder deaktivieren

Um Safety Center zu aktivieren oder zu deaktivieren, verwenden Sie das überlagerbare boolesche Feld config_enableSafetyCenter in der Datei frameworks/base/core/res/res/values/config.xml .

Auf den meisten Geräten wird Safety Center standardmäßig unterstützt, beispielsweise auf Telefonen und Tablets. Bei einigen Formfaktoren ist Safety Center standardmäßig deaktiviert, beispielsweise bei Auto, TV und 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>

Um Safety Center zu unterstützen, setzen Sie config_enableSafetyCenter auf true . Wenn Sie Safety Center nicht unterstützen möchten, legen Sie diesen Wert auf false fest, um es zu deaktivieren.

Wenn das Sicherheitscenter deaktiviert ist, wird bei jedem Versuch, zur Seite „Sicherheit und Datenschutz“ umzuleiten, stattdessen die App „Einstellungen“ geöffnet. Jeder Versuch, mit den APIs zu interagieren, wird stillschweigend ignoriert oder gibt einen Standardwert zurück. Die zugehörige Kachel „Schnelleinstellungen“ und der Eintrag „Einstellungen“ werden ebenfalls angezeigt oder ausgeblendet, je nachdem, ob Safety Center aktiviert ist.

DeviceConfig-Flag

Zusätzlich zur Aktivierung von Safety Center mithilfe der config_enableSafetyCenter Konfiguration wird ein DeviceConfig Flag ( safety_center_is_enabled ) verwendet, um Safety Center aus der Ferne zu aktivieren oder zu deaktivieren.

In Android 14 und höher sind keine weiteren Maßnahmen erforderlich, da dieses Flag standardmäßig auf true gesetzt ist.

In Android 13 ist Safety Center standardmäßig serverseitig deaktiviert und über die Zulassungsliste mit diesem Flag aktiviert. Senden Sie die Fingerabdrücke Ihres Geräts und wenden Sie sich an Ihren TAM, um zur Zulassungsliste hinzugefügt zu werden. Beachten Sie, dass die Mainline-Version M-2022-11 oder höher zur Zulassungsliste hinzugefügt werden muss. Für lokale Entwicklung und Tests kann das Flag lokal (bis zu einem Neustart) mit einem adb -Befehl aktiviert oder deaktiviert werden. So aktivieren Sie beispielsweise das 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

Und um zu bestätigen, ob Safety Center aktiviert ist:

adb root
adb shell cmd safety_center enabled

Die Ausgabe gibt zurück, ob Safety Center auf dem Gerät korrekt aktiviert ist.

Aktualisieren Sie die Konfigurationsdatei

Verwenden Sie die Konfigurationsdatei safety_center_config.xml , um den Inhalt des Safety Center-Bildschirms zu ändern. Sie können diese Datei überlagern, sofern Sie die Anpassungsanforderungen erfüllt haben.

Überlagern Sie die Konfigurationsdatei

Informationen zum Ändern der Laufzeitressourcenüberlagerungen (RROs) zum Überlagern der Datei safety_center_config.xml “ finden Sie unter „Ändern des Werts der Ressourcen einer App zur Laufzeit“ .

Stellen Sie in Android 14 sicher, dass Sie die Datei res/raw-v34/safety_center_config.xml und nicht die res/raw/safety_center_config.xml überlagern, da erstere Vorrang hat (dies gilt auch für andere Dateien, die für v34 gelten, z. B. res/values-v34/strings.xml ). Das Overlay-Paket muss einen SDK-Mindestwert von weniger als 34 haben, andernfalls wird der v34 Qualifier möglicherweise während der Optimierung entfernt. Stellen Sie außerdem sicher, dass Sie ein statisches Overlay verwenden, da dieser Wert beim Booten geladen wird.

Für Android Open Source Project (AOSP)-Geräte verwenden Sie das Paket com.android.safetycenter.resources als Ziel. Es gibt keine Overlay-Konfiguration als Ziel. Alle Ressourcen sind ohne Einschränkung des Inhalts überlagerbar.

Für GMS-Geräte, die für den Empfang von Mainline-Updates konfiguriert sind, zielen Sie auf das Paket com.google.android.safetycenter.resources ab. Zielen Sie auf die Konfiguration SafetyCenterConfig . Diese Konfiguration erfordert, dass sich das Overlay-Paket entweder in der product , system oder vendor befindet. GMS-OEMs sollten die von Google bereitgestellte Datei safety_center_config.xml kopieren und die Änderungen auf diejenigen beschränken, die durch die GTS-Tests zulässig sind. Die Overlay-Definition sollte ungefähr so ​​aussehen:

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

Für GMS-Geräte, die nicht für den Empfang von Mainline-Updates konfiguriert sind, verwenden Sie das Paket com.android.safetycenter.resources als Ziel. Es gibt keine Overlay-Konfiguration als Ziel. Das Overlay-Paket muss den Paketnamen com.google.android.safetycenter.resources verwenden.

GMS-OEMs sollten die von Google bereitgestellte Datei safety_center_config.xml kopieren und die Änderungen auf diejenigen beschränken, die durch die GTS-Tests zulässig sind. GMS-OEMs müssen auch die in der XML-Konfiguration verwendeten Zeichenfolgen definieren.

Dateistruktur

Auf hoher Ebene ist die Datei safety_center_config.xml eine Liste von Sicherheitsquellen. Diese Sicherheitsquellen sind in Gruppen organisiert, um die Signale auf dem Safety Center-Bildschirm zu verwalten, zum Beispiel App-Sicherheit oder Bildschirmsperre. Die Reihenfolge dieser Liste definiert die Anzeigereihenfolge:

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

Google-Konfigurationsdatei

Die AOSP-Konfigurationsdatei befindet sich in packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml .

In Android 13 lautet die Google-Konfigurationsdatei:

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

In Android 14 lautet die Google-Konfigurationsdatei:

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

Passen Sie Safety Center-Quellen an

Safety Center-Quellentypen

Abhängig von der Art der Daten, die sie dem Safety Center bereitstellen, können Quellen dynamisch, nur für Probleme oder statisch sein.

Dynamische Quellen

Markieren Sie die Sicherheitsquelle als dynamic-safety-source , wenn sie dem Safety Center dynamische Daten sowohl für ihre Eintrittskarten als auch für potenzielle Warnkarten bereitstellen kann:

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

Nur-Problem-Quellen

Markieren Sie die Quelle als issue-only-safety-source wenn kein zugehöriger Einstellungseintrag vorhanden ist, aber dennoch Warnungen angezeigt werden. Sie können nur Warnungen bereitstellen; Das Bereitstellen eines Einstellungseintrags führt zu einem Fehler:

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

Statische Quellen

Markieren Sie die Quelle als static-safety-source wenn es sich um einen Umleitungseintrag ohne dynamische Daten handelt:

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

Konfiguration der Safety Center-Quelle

Abhängig vom Safety Center-Quellentyp und anderen Invarianten sind Konfigurationsdateifelder optional, erforderlich oder verboten und können angepasst werden:

  • id
    • Eindeutiger Bezeichner für die Sicherheitsquelle, muss in der gesamten Datei eindeutig sein und darf nur aus alphabetischen Zeichen (az, AZ) bestehen und unterscheidet zwischen Groß- und Kleinschreibung
    • String-Typ
    • Erforderlich für alle Sicherheitsquellentypen
  • packageName
    • Name des Pakets, das diese Sicherheitsquelle besitzt, zum Beispiel com.google.android.permissioncontroller
    • String-Typ
    • Erforderlich für dynamische und Nur-Problem-Sicherheitsquellen
    • Für statische Sicherheitsquellen in Android 13 verboten; In Android 14 kann dies optional so eingestellt werden, dass es explizit und nicht implizit auf die intentAction der Quelle abzielt (weitere Einzelheiten finden Sie in der Dokumentation zur Absichtsauflösung ).
  • initialDisplayState
    • Wie der UI-Eintrag angezeigt wird, wenn von der Sicherheitsquelle keine Daten bereitgestellt werden
    • Der als String dargestellte Aufzählungstyp muss einer der folgenden sein:
      • enabled (Standard, wird normal angezeigt)
      • disabled (wird ausgegraut angezeigt, kann nicht angeklickt werden)
      • hidden (wird nicht angezeigt)
    • Optional für dynamische Sicherheitsquellen (Standard ist enabled )
    • Für Nur-Problem-Quellen und statische Sicherheitsquellen verboten
  • profile
    • Ob diese Sicherheitsquelle mit dem verwalteten Profil des Benutzers interagiert
    • Der als String dargestellte Aufzählungstyp muss einer der folgenden sein:
      • primary_profile_only (interagiert nur mit dem übergeordneten Profil)
      • all_profiles (kann auch mit den verwalteten Profilen interagieren)
    • Auf all_profiles werden mehrere UI-Einträge generiert (einer für das übergeordnete Profil und einer für jedes verwaltete Profil); Die Sicherheitsquelle kann für jedes Profil unterschiedliche Daten bereitstellen
    • Erforderlich für alle Sicherheitsquellen
  • searchTerms
    • Liste der Suchbegriffe, die dem Safety Center-Eintrag zugeordnet werden, wenn die Suche in der Einstellungen-App verwendet wird
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_search_terms
    • Optional für dynamische und statische Sicherheitsquellen (Standard sind keine Suchbegriffe)
    • Für Nur-Problem-Sicherheitsquellen verboten
  • title
    • Standardtitel des UI-Eintrags, der verwendet wird, wenn von der Quelle keine Daten dynamisch bereitgestellt werden
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_title
    • Erforderlich für dynamische und statische Sicherheitsquellen (es sei denn, initialDisplayState="hidden" ohne searchTerms )
    • Für Nur-Problem-Sicherheitsquellen verboten
  • titleForWork
    • Standardtitel des UI-Eintrags für das verwaltete Profil, das verwendet wird, wenn Daten nicht dynamisch von der Quelle bereitgestellt werden
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_title_for_work
    • Erforderlich für dynamische und statische Sicherheitsquellen, die profile="all_profiles" angegeben haben (es sei denn, initialDisplayState="hidden" ohne searchTerms )
    • Verboten für Nur-Problem-Sicherheitsquellen oder Quellen mit profile="primary_profile_only"
  • summary
    • Standardzusammenfassung des UI-Eintrags (dies ist eine längere Textbeschreibung, die unter dem Titel angezeigt wird), die verwendet wird, wenn Daten nicht dynamisch von der Quelle bereitgestellt werden
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_summary
    • Optional für statische Sicherheitsquellen (Standard ist keine Zusammenfassung)
    • Erforderlich für dynamische Sicherheitsquellen (es sei denn, initialDisplayState ist hidden )
    • Für Nur-Problem-Sicherheitsquellen verboten
  • intentAction
    • Aktion, die ausgelöst wird, wenn auf den UI-Eintrag geklickt wird
    • Zeichenfolgentyp, zum Beispiel com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS , oder Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_intent_action
    • Wenn diese Absichtsaktion für den angegebenen packageName (falls vorhanden) nicht aufgelöst wird, verhält sich der UI-Eintrag genauso wie bei initialDisplayState="disabled"
    • Erforderlich für statische Sicherheitsquellen und dynamic Sicherheitsquellen mit initialDisplayState="enabled"
    • Für Nur-Problem-Sicherheitsquellen verboten
  • maxSeverityLevel
    • Maximaler Schweregrad, den diese Safety Center-Quelle bereitstellen kann
    • Als Zeichenfolge dargestellte Ganzzahl, zum Beispiel 300
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard ist kein Maximum)
    • Für statische Sicherheitsquellen verboten
  • loggingAllowed
    • Ob Safety Center Interaktionen oder Daten im Zusammenhang mit dieser Quelle protokollieren kann
    • Boolescher Wert, dargestellt als String, zum Beispiel false
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard ist true )
    • Für statische Sicherheitsquellen verboten
  • refreshOnPageOpenAllowed
    • Ob ein Signal an die Sicherheitsquelle gesendet werden soll, um deren Daten zu aktualisieren, wenn der Safety Center-Bildschirm geöffnet wird
    • Boolescher Wert, dargestellt als String, zum Beispiel true
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard ist false )
    • Für statische Sicherheitsquellen verboten
  • notificationsAllowed (ab Android 14)
    • Ob die Sicherheitsquelle optional eine Benachrichtigung bereitstellen kann, wenn sie ein Problem meldet
    • Boolescher Wert, dargestellt als String, zum Beispiel true
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard ist false )
    • Für statische Sicherheitsquellen verboten
  • deduplicationGroup (ab Android 14)
    • Eine potenzielle eindeutige Kennung, die zur Deduplizierung von Problemen aus verschiedenen Quellen verwendet werden kann. Quellen innerhalb derselben Deduplizierungsgruppe können Probleme mit einer optionalen Deduplizierungs-ID senden. Probleme mit derselben Deduplizierungs-ID werden nur einmal in der Benutzeroberfläche angezeigt, auch wenn sie von mehreren Quellen gesendet werden.
    • String-Typ
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard ist keine Deduplizierung)
    • Für statische Sicherheitsquellen verboten
  • packageCertificateHashes (ab Android 14)
    • Eine durch Kommas getrennte Liste von Zertifikat-Hashes für den angegebenen packageName . Wenn dies festgelegt ist, wird aus Sicherheitsgründen bei der Interaktion mit der Sicherheitsquelle eine Zertifikatsprüfung anhand der angegebenen packageCertificateHashes für den angegebenen packageName durchgeführt.
    • String-Typ
    • Optional für dynamische und Nur-Problem-Sicherheitsquellen (Standard sind keine Zertifikatsprüfungen)
    • Für statische Sicherheitsquellen verboten

Passen Sie Safety Center-Quellengruppen an

Safety Center-Quellen müssen in einer Safety Center-Quellengruppe enthalten sein. Jede Quellgruppe wird in der Benutzeroberfläche in der Reihenfolge angezeigt, in der die Quellgruppen in der Datei aufgeführt sind. Jede Quelle wird innerhalb der Gruppe in der Reihenfolge angezeigt, in der die Quellen in der Datei aufgeführt sind. Wenn die Gruppe eine einzelne Sicherheitsquelle enthält, wird sie als einzelner Eintrag und nicht als Gruppe angezeigt.

Konfiguration der Safety Center-Quellengruppe

Verwenden Sie die folgenden Variablen, um Safety Center-Quellgruppen anzupassen:

  • id
    • Eindeutiger Bezeichner für die Sicherheitsquellengruppe; muss in der gesamten Datei eindeutig sein
    • String-Typ
    • Erforderlich
  • title
    • Titel der Gruppe in der Benutzeroberfläche
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_title
    • Erforderlich, wenn es mindestens eine dynamische oder statische Sicherheitsquelle innerhalb der Gruppe gibt (d. h. die Gruppe ist nicht vom type="hidden" ).
  • summary
    • Kurze Beschreibung der Gruppe in der Benutzeroberfläche, angezeigt unter dem Titel. Wird unter bestimmten Bedingungen angezeigt, typischerweise wenn keine Daten bereitgestellt werden; andernfalls wird die Zusammenfassung auf Grundlage der von den Quellen innerhalb der Gruppe bereitgestellten Daten berechnet.
    • Ressourcen-ID, dargestellt als vollständig qualifizierter Ressourcenname, zum Beispiel @package:string/my_summary
    • Optional (Standard ist keine Zusammenfassung)
  • statelessIconType
    • Symboltyp, der für die Gruppe angezeigt wird, wenn von den Sicherheitsquellen kein Status bereitgestellt wird, beispielsweise statische Einträge
    • Aufzählungstyp, dargestellt als Zeichenfolge, der entweder none “ oder privacy (der Typ des Datenschutzsymbols) sein muss.
    • Optional (Standard ist none )
  • type (ab Android 14)
    • Ein expliziter Typ, um zu qualifizieren, wie diese Gruppe mit Safety Center interagiert
    • Der als String dargestellte Aufzählungstyp muss einer der folgenden sein:
      • stateful (zeigt den Gesamtstatus des Safety Centers an und trägt dazu bei)
      • stateless (wird angezeigt und trägt nicht zum Gesamtstatus des Safety Centers bei)
      • hidden (wird nicht angezeigt, alle Quellen müssen Nur-Problem-Quellen sein)
    • Optional, wird standardmäßig durch Verwendung der in der Gruppe enthaltenen Sicherheitsquellen sowie der summary und statelessIconType abgeleitet. Wenn der type angegeben wird, werden einige zusätzliche Invarianten erzwungen, um sicherzustellen, dass er mit den in der Gruppe gefundenen Quellen übereinstimmt (die Gruppe kann beispielsweise nicht hidden werden, wenn sie für den Benutzer sichtbare Einträge enthält).

Gruppentypen für Safety Center-Quellen

Safety Center-Quellgruppen werden basierend auf dem Status bestimmter Felder als zustandsbehaftet, zustandslos oder ausgeblendet klassifiziert.

Stateful-Gruppe

Eine Gruppe, die sowohl einen Titel als auch eine Zusammenfassung hat oder stateLessIconType="privacy" als zustandsbehaftet gilt, trägt zum Gesamtstatus des Safety Centers bei:

<safety-sources-group
    id="GoogleAppSecuritySources"
    title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
    summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
    <dynamic-safety-source
        id="GooglePlayProtect"
        packageName="com.android.vending"
        profile="all_profiles"
        intentAction="com.google.android.finsky.PLAY_PROTECT"
        title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
        titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
        summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
        searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
        refreshOnPageOpenAllowed="true"/>
    <dynamic-safety-source
        id="GoogleAppProtectionService"
        packageName="com.google.android.odad"
        profile="primary_profile_only"
        initialDisplayState="hidden"
        loggingAllowed="false"/>
</safety-sources-group>

In Android 13 wird eine solche Gruppe als reduzierbarer Eintrag in der Benutzeroberfläche angezeigt. In Android 14 wird es als Eintrag mit eigenem Status angezeigt, der zur Unterseite weiterleitet.

Staatenlose Gruppe

Eine Gruppe, die einen Titel, aber keine Zusammenfassung und stateLessIconType="none" hat, gilt als zustandslos und trägt nicht zum Gesamtstatus des Safety Centers bei:

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

Eine solche Gruppe wird als starre Liste von Einträgen in der Benutzeroberfläche angezeigt.

Versteckte Gruppe

Eine ausgeblendete Gruppe enthält nur Sicherheitsquellen, die sich nur auf Probleme beziehen, und hat keinen Titel. Ausgeblendete Gruppen werden in der Benutzeroberfläche nicht angezeigt:

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

Dynamische Daten für einen statischen Eintrag

Sie können die dynamische Safety Center-Quelle als statischen Eintrag anzeigen, was das Pushen von Umleitungseinträgen abhängig von bestimmten Bedingungen ermöglicht und die Anpassung des Inhalts zur Laufzeit ermöglicht. Definieren Sie die dynamische Quelle beispielsweise innerhalb einer zustandslosen Gruppe, abhängig von Ihrem Arbeitsrichtlinien-Infoeintrag.

Dieses Beispiel zeigt eine dynamische Sicherheitsquelle, die kein Sicherheitssignal liefert, da sie sich in einer zustandslosen Gruppe befindet:

<safety-sources-group
    id="AndroidAdvancedSources"
    title="@com.google.android.safetycenter.resources:string/google_advanced_title">
    <dynamic-safety-source
        id="AndroidWorkPolicyInfo"
        packageName="com.google.android.permissioncontroller"
        profile="primary_profile_only"
        initialDisplayState="hidden"
        refreshOnPageOpenAllowed="true"/>
            <!-- … -->
</safety-sources-group>

In diesem Beispiel kann die Quelle nur grüne Warnkarten übertragen und einen nicht spezifizierten Status bereitstellen. Um weitere Daten bereitstellen zu können, muss sich die Quelle innerhalb einer Stateful-Gruppe befinden.

Passen Sie Zeichenfolgen und Overlay-Felder an

Bei GMS-Geräten, die nicht für den Empfang von Mainline-Updates konfiguriert sind, können Sie anstelle der Überlagerung der gesamten Konfigurationsdatei sechs Zeichenfolgenressourcen überlagern, um alle Anpassungsanforderungen zu erfüllen. Die überlagerten Zeichenfolgenressourcen sind in der Tabelle aufgeführt.

String-Ressource Beschreibung
google_lock_screen_sources_summary Überlagern Sie diesen Wert, um eine statische Zusammenfassung zu definieren, die für die AndroidLockScreenSources Gruppe angezeigt wird, wenn sich alle Quellen in der Gruppe in einem guten Zustand befinden (Informationen oder nicht angegebener Schweregrad). Standardmäßig zeigt Safety Center den Titel aller Quellen in der Gruppe verkettet als Zusammenfassung für die Gruppe an.
google_biometrics_title Überlagern Sie diesen Wert, um einen statischen Titel für die biometrische Quelle zu definieren, die dem Paket com.android.settings gehört und verwendet wird, wenn von der Quelle keine dynamischen Daten bereitgestellt werden. Überlagern Sie dies, wenn Sie auch den von der Quelle dynamisch bereitgestellten Titel im Paket com.android.settings überlagern. Dies wird standardmäßig ignoriert, da der anfängliche Anzeigestatus für die Quelle hidden ist.
google_biometrics_summary Überlagern Sie diesen Wert, um eine statische Zusammenfassung für die biometrische Quelle zu definieren, die dem Paket com.android.settings gehört und verwendet wird, wenn von der Quelle keine dynamischen Daten bereitgestellt werden. Dies wird standardmäßig ignoriert, da der anfängliche Anzeigestatus für die Quelle hidden ist.
google_biometrics_search_terms Überlagern Sie diesen Wert, um eine Liste von Suchbegriffen für die biometrische Quelle zu definieren, die dem Paket com.android.settings gehört.
google_biometrics_initial_display_state Überlagern Sie diesen Wert, um einen UI-Eintrag für die biometrische Quelle anzuzeigen, die dem Paket com.android.settings gehört, wenn von der Quelle keine dynamischen Daten bereitgestellt werden. Der Standardwert ist hidden .
google_security_updates_intent Überlagern Sie diesen Wert, um die Absicht zu ändern, die zum Öffnen der Aktivität erforderlich ist, die es dem Benutzer ermöglicht, Sicherheitsupdates zu überprüfen und zu installieren. Diese Absichtsaktion muss mit einer exportierten Aktivität verknüpft sein. Der Standardwert ist android.settings.SYSTEM_UPDATE_SETTINGS .

Keine anderen Zeichenfolgen im Paket com.google.android.safetycenter.resources können überlagert werden.

Bei AOSP-Geräten sind alle Ressourcen im Paket com.android.safetycenter.resources ohne Einschränkung des Inhalts überlagerbar.

Erstellen Sie für GMS-Geräte, die nicht für den Empfang von Mainline-Updates konfiguriert sind, ein com.google.android.safetycenter.resources -Paket, das com.android.safetycenter.resources ersetzt oder überlagert und alle von den GTS-Tests erwarteten Zeichenfolgen definiert.

Diese Zeichenfolgen sind:

  • 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

Anpassungsanforderungen

Anforderungen an das Dateiformat

Die Konfigurationsdatei muss eine XML-Datei sein und dem unter Aktualisieren der Konfigurationsdatei beschriebenen Format entsprechen. Die Datei muss sich im raw Ordner befinden. Es muss die in „Safety Center-Quellen anpassen“ und „Safety Center-Quellengruppen anpassen“ beschriebenen Invarianten erfüllen. Wenn die Konfigurationsdatei nicht den oben genannten Anforderungen entspricht, wird die Funktion vollständig deaktiviert. Das Parsen dieser Datei wird auch durch CTS- und GTS-Tests unterstützt, die zusätzlichen Kontext bereitstellen können, falls die Datei nicht korrekt formatiert ist (zusätzlich zu den Logcat- Geräteprotokollen).

Geräte mit Google-Diensten

Auf GMS-Geräten gelten für diese Datei einige Einschränkungen. Dies wird durch GTS-Tests unterstützt.

AOSP-Geräte

Auf AOSP-Geräten muss die Konfigurationsdatei wohlgeformt sein und die CTS-Tests für Safety Center bestehen. Die Tests überprüfen, ob die Datei wohlgeformt ist. Auch GMS-Geräte müssen diese Tests bestehen.