Sesuaikan Pusat Keamanan

Mengaktifkan atau menonaktifkan Pusat Keamanan

Untuk mengaktifkan atau menonaktifkan Pusat Keamanan, gunakan bidang boolean config_enableSafetyCenter yang dapat dihamparkan di file frameworks/base/core/res/res/values/config.xml .

Di sebagian besar perangkat, Pusat Keamanan didukung secara default, misalnya di ponsel dan tablet. Pada beberapa faktor bentuk, Pusat Keamanan dinonaktifkan secara default, misalnya di Otomatis, TV, dan 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>

Untuk mendukung Pusat Keamanan, setel config_enableSafetyCenter ke true . Jika Anda tidak ingin mendukung Pusat Keamanan, setel nilai ini ke false untuk menonaktifkannya.

Jika Pusat Keamanan dinonaktifkan, segala upaya untuk mengalihkan ke halaman Keamanan & Privasi akan membuka aplikasi Pengaturan. Setiap upaya untuk berinteraksi dengan API akan diabaikan secara diam-diam atau mengembalikan nilai default. Ubin Pengaturan Cepat terkait dan entri Pengaturan juga diekspos atau disembunyikan tergantung pada apakah Pusat Keamanan diaktifkan.

Bendera DeviceConfig

Selain mengaktifkan Pusat Keamanan menggunakan konfigurasi config_enableSafetyCenter , tanda DeviceConfig ( safety_center_is_enabled ) digunakan untuk mengaktifkan atau menonaktifkan Pusat Keamanan dari jarak jauh.

Di Android 14 dan yang lebih baru, tidak diperlukan tindakan lebih lanjut karena tanda ini true secara default.

Di Android 13, Pusat Keamanan dinonaktifkan secara default di sisi server dan diaktifkan berdasarkan daftar yang diizinkan menggunakan tanda ini. Kirimkan sidik jari perangkat Anda dan hubungi TAM Anda untuk ditambahkan ke daftar yang diizinkan. Perlu diperhatikan bahwa versi jalur utama M-2022-11 atau lebih tinggi harus ditambahkan ke daftar yang diizinkan. Untuk pengembangan dan pengujian lokal, flag dapat diaktifkan atau dinonaktifkan secara lokal (sampai reboot) dengan perintah adb . Misalnya, untuk mengaktifkan bendera:

adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true

Dan untuk mengonfirmasi apakah Pusat Keamanan diaktifkan:

adb root
adb shell cmd safety_center enabled

Outputnya akan menampilkan apakah Pusat Keamanan diaktifkan dengan benar di perangkat.

Perbarui file konfigurasi

Gunakan file konfigurasi safety_center_config.xml untuk mengubah konten layar Pusat Keamanan. Anda dapat melapisi file ini dengan asumsi Anda telah memenuhi Persyaratan Penyesuaian .

Hamparkan file konfigurasi

Untuk melapisi file safety_center_config.xml , lihat Mengubah nilai sumber daya aplikasi saat runtime untuk informasi tentang memodifikasi runtime resource overlay (RRO).

Di Android 14, pastikan untuk melapisi file res/raw-v34/safety_center_config.xml dan bukan res/raw/safety_center_config.xml karena file res/raw-v34/safety_center_config.xml lebih diutamakan (ini juga berlaku untuk file lain yang dicakup untuk v34 misalnya res/values-v34/strings.xml ). Paket overlay harus memiliki SDK min yang lebih rendah dari 34 , jika tidak, kualifikasi v34 dapat dihapus selama pengoptimalan. Pastikan juga untuk menggunakan overlay statis, karena nilai ini dimuat sekitar waktu boot.

Untuk perangkat Android Open Source Project (AOSP), targetkan paket com.android.safetycenter.resources . Tidak ada konfigurasi hamparan untuk ditargetkan. Semua sumber daya dapat dihamparkan tanpa batasan konten.

Untuk perangkat GMS yang dikonfigurasi untuk menerima pembaruan Mainline, targetkan paket com.google.android.safetycenter.resources . Targetkan konfigurasi SafetyCenterConfig . Konfigurasi ini mengharuskan paket overlay ada di partisi product , system , atau vendor . OEM GMS harus menyalin file safety_center_config.xml yang disediakan Google dan membatasi modifikasi pada modifikasi yang diizinkan oleh pengujian GTS . Definisi overlay harus mendekati ini:

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

Untuk perangkat GMS yang tidak dikonfigurasi untuk menerima pembaruan Mainline, targetkan paket com.android.safetycenter.resources . Tidak ada konfigurasi hamparan untuk ditargetkan. Paket overlay harus menggunakan nama paket com.google.android.safetycenter.resources .

OEM GMS harus menyalin file safety_center_config.xml yang disediakan Google dan membatasi modifikasi pada modifikasi yang diizinkan oleh pengujian GTS. OEM GMS juga harus menentukan string yang digunakan dalam konfigurasi XML.

Struktur file

Pada tingkat tinggi, file safety_center_config.xml adalah daftar sumber keamanan. Sumber keamanan ini disusun dalam kelompok untuk mengelola sinyal di layar Pusat Keamanan, misalnya Keamanan Aplikasi atau Kunci Layar. Urutan daftar ini menentukan urutan tampilan:

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

File konfigurasi Google

File konfigurasi AOSP terletak di packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml .

Di Android 13, file konfigurasi Google adalah:

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

Di Android 14, file konfigurasi Google adalah:

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

Sesuaikan sumber Pusat Keamanan

Jenis sumber Pusat Keamanan

Sumber dapat bersifat dinamis, khusus masalah, atau statis, berdasarkan jenis data yang diberikan ke Pusat Keamanan.

Sumber dinamis

Tandai sumber keselamatan sebagai dynamic-safety-source jika sumber tersebut dapat memberikan data dinamis ke Pusat Keamanan baik untuk kartu masuk maupun kartu peringatan potensial:

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

Sumber khusus terbitan

Tandai sumber sebagai issue-only-safety-source jika tidak ada entri pengaturan terkait namun peringatan masih diberikan. Anda hanya dapat memberikan peringatan; memberikan entri pengaturan menghasilkan kesalahan:

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

Sumber statis

Tandai sumber sebagai static-safety-source jika itu adalah entri pengalihan tanpa data dinamis:

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

Konfigurasi sumber Pusat Keamanan

Bergantung pada jenis sumber Pusat Keamanan dan invarian lainnya, bidang file konfigurasi bersifat opsional, wajib, atau dilarang dan dapat dikustomisasi:

  • id
    • Pengidentifikasi unik untuk sumber keamanan, harus unik di seluruh file dan harus terdiri dari karakter alfabet saja (az, AZ) dan peka huruf besar-kecil
    • Tipe tali
    • Diperlukan untuk semua jenis sumber keselamatan
  • packageName
    • Nama paket yang memiliki sumber keamanan ini, misalnya com.google.android.permissioncontroller
    • Tipe tali
    • Diperlukan untuk sumber keamanan yang dinamis dan khusus masalah
    • Dilarang untuk sumber keamanan statis di Android 13; di Android 14 ini secara opsional dapat disetel untuk menargetkan intentAction sumber secara eksplisit, bukan secara implisit (lihat dokumentasi resolusi maksud untuk detail selengkapnya)
  • initialDisplayState
    • Bagaimana entri UI ditampilkan ketika tidak ada data yang disediakan oleh sumber keamanan
    • Tipe enum yang direpresentasikan sebagai string, harus berupa salah satu dari berikut ini:
      • enabled (default, ditampilkan secara normal)
      • disabled (tampilan berwarna abu-abu, tidak dapat diklik)
      • hidden (tidak ditampilkan)
    • Opsional untuk sumber keamanan dinamis (default enabled )
    • Dilarang untuk sumber keamanan statis dan hanya masalah
  • profile
    • Apakah sumber keamanan ini berinteraksi dengan profil terkelola pengguna
    • Tipe enum yang direpresentasikan sebagai string, harus berupa salah satu dari berikut ini:
      • primary_profile_only (hanya berinteraksi dengan induk profil saja)
      • all_profiles (juga dapat berinteraksi dengan profil yang dikelola)
    • Pada all_profiles , beberapa entri UI dihasilkan (satu untuk induk profil, dan satu untuk setiap profil terkelola); sumber keamanan dapat memberikan data yang berbeda untuk setiap profil
    • Diperlukan untuk semua sumber keselamatan
  • searchTerms
    • Daftar istilah pencarian yang dipetakan ke entri Pusat Keamanan saat menggunakan pencarian di aplikasi Pengaturan
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_search_terms
    • Opsional untuk sumber keamanan dinamis dan statis (defaultnya adalah tanpa istilah pencarian)
    • Dilarang untuk sumber keamanan khusus masalah
  • title
    • Judul default entri UI, digunakan ketika tidak ada data yang disediakan secara dinamis oleh sumber
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_title
    • Diperlukan untuk sumber keamanan dinamis dan statis (kecuali initialDisplayState="hidden" tanpa searchTerms )
    • Dilarang untuk sumber keamanan khusus masalah
  • titleForWork
    • Judul default entri UI untuk profil terkelola yang digunakan saat data tidak disediakan secara dinamis oleh sumber
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_title_for_work
    • Diperlukan untuk sumber keamanan dinamis dan statis yang telah menentukan profile="all_profiles" (kecuali initialDisplayState="hidden" tanpa searchTerms )
    • Dilarang untuk sumber keamanan khusus masalah atau sumber dengan profile="primary_profile_only"
  • summary
    • Ringkasan default entri UI (ini adalah deskripsi teks panjang yang ditampilkan di bawah judul), digunakan ketika data tidak disediakan secara dinamis oleh sumber
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_summary
    • Opsional untuk sumber keamanan statis (defaultnya adalah tidak ada ringkasan)
    • Diperlukan untuk sumber keamanan dinamis (kecuali initialDisplayState hidden )
    • Dilarang untuk sumber keamanan khusus masalah
  • intentAction
    • Tindakan yang akan dipicu ketika entri UI diklik
    • Jenis string, misalnya com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS , atau ID sumber daya yang direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya @package:string/my_intent_action
    • Jika tindakan maksud ini tidak terselesaikan untuk packageName yang diberikan (jika ada), entri UI akan berperilaku sama seperti memiliki initialDisplayState="disabled"
    • Diperlukan untuk sumber keamanan statis dan sumber keamanan dynamic yang memiliki initialDisplayState="enabled"
    • Dilarang untuk sumber keamanan khusus masalah
  • maxSeverityLevel
    • Tingkat keparahan maksimum yang dapat diberikan oleh sumber Pusat Keamanan ini
    • Integer direpresentasikan sebagai string, misalnya 300
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (defaultnya tidak maksimal)
    • Dilarang untuk sumber keamanan statis
  • loggingAllowed
    • Apakah Pusat Keamanan dapat mencatat interaksi atau data yang terkait dengan sumber ini
    • Boolean direpresentasikan sebagai string, misalnya false
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (defaultnya adalah true )
    • Dilarang untuk sumber keamanan statis
  • refreshOnPageOpenAllowed
    • Apakah sinyal harus dikirim ke sumber keamanan untuk menyegarkan datanya saat layar Pusat Keamanan dibuka
    • Boolean direpresentasikan sebagai string, misalnya true
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (defaultnya adalah false )
    • Dilarang untuk sumber keamanan statis
  • notificationsAllowed (Memulai Android 14)
    • Apakah sumber keselamatan dapat memberikan pemberitahuan secara opsional saat melaporkan masalah
    • Boolean direpresentasikan sebagai string, misalnya true
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (defaultnya adalah false )
    • Dilarang untuk sumber keamanan statis
  • deduplicationGroup (Memulai Android 14)
    • Pengidentifikasi unik potensial yang dapat digunakan untuk menghapus duplikat masalah yang berasal dari sumber berbeda. Sumber dalam grup deduplikasi yang sama dapat mengirimkan masalah dengan id deduplikasi opsional. Masalah dengan id deduplikasi yang sama hanya akan ditampilkan satu kali di UI, meskipun beberapa sumber mengirimkannya.
    • Tipe tali
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (defaultnya adalah tanpa deduplikasi)
    • Dilarang untuk sumber keamanan statis
  • packageCertificateHashes (Memulai Android 14)
    • Daftar hash sertifikat yang dipisahkan koma untuk packageName yang diberikan. Jika ini disetel, pemeriksaan sertifikat akan dilakukan terhadap packageCertificateHashes yang diberikan untuk packageName yang diberikan saat berinteraksi dengan sumber keamanan, untuk tujuan keamanan.
    • Tipe tali
    • Opsional untuk sumber keamanan dinamis dan khusus masalah (standarnya adalah tidak ada pemeriksaan sertifikat)
    • Dilarang untuk sumber keamanan statis

Sesuaikan grup sumber Pusat Keamanan

Sumber Pusat Keamanan harus terdapat dalam grup sumber Pusat Keamanan. Setiap grup sumber ditampilkan di UI sesuai urutan grup Sumber yang dicantumkan dalam file. Setiap sumber ditampilkan dalam grup sesuai urutan Sumber yang dicantumkan dalam file. Jika grup berisi satu sumber keamanan, grup tersebut akan ditampilkan sebagai entri tunggal, bukan grup.

Konfigurasi grup sumber Pusat Keamanan

Gunakan variabel berikut untuk menyesuaikan grup sumber Pusat Keamanan:

  • id
    • Pengidentifikasi unik untuk grup sumber keamanan; harus unik di seluruh file
    • Tipe tali
    • Diperlukan
  • title
    • Judul grup di UI
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_title
    • Diperlukan jika ada setidaknya satu sumber keamanan dinamis atau statis dalam grup (yaitu grup tersebut bukan dari type="hidden" )
  • summary
    • Deskripsi singkat grup di UI, ditampilkan di bawah judul. Ditampilkan dalam kondisi tertentu, biasanya ketika data tidak disediakan; jika tidak, ringkasan dihitung berdasarkan data yang diberikan oleh sumber dalam grup.
    • ID Sumber Daya direpresentasikan sebagai nama sumber daya yang sepenuhnya memenuhi syarat, misalnya, @package:string/my_summary
    • Opsional (standarnya adalah tidak ada ringkasan)
  • statelessIconType
    • Jenis ikon ditampilkan untuk grup ketika tidak ada status yang disediakan oleh sumber keamanan, misalnya entri statis
    • Tipe enum direpresentasikan sebagai string yang harus berupa none atau privacy (tipe ikon privasi)
    • Opsional (defaultnya none )
  • type (Memulai Android 14)
    • Jenis eksplisit untuk memenuhi syarat cara grup ini berinteraksi dengan Pusat Keamanan
    • Tipe enum yang direpresentasikan sebagai string, harus berupa salah satu dari berikut ini:
      • stateful (menampilkan dan berkontribusi terhadap status Pusat Keamanan secara keseluruhan)
      • stateless (menampilkan dan tidak berkontribusi pada status Pusat Keamanan secara keseluruhan)
      • hidden (tidak ditampilkan, semua sumber harus hanya terbitan saja)
    • Opsional, disimpulkan secara default dengan menggunakan sumber keamanan yang terdapat dalam grup serta summary dan statelessIconType . Jika type ditentukan, beberapa invarian tambahan diterapkan untuk memastikan bahwa tipe tersebut cocok dengan sumber yang ditemukan dalam grup (misalnya, grup tidak dapat hidden jika berisi entri yang terlihat oleh pengguna)

Jenis grup sumber Pusat Keamanan

Grup sumber Pusat Keamanan diklasifikasikan menjadi stateful, stateless, atau tersembunyi, berdasarkan status kolom tertentu.

Grup yang penuh keadaan

Grup yang memiliki judul dan ringkasan, atau stateLessIconType="privacy" dianggap berstatus berkontribusi terhadap status Pusat Keamanan secara keseluruhan:

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

Di Android 13, grup seperti itu akan ditampilkan sebagai entri yang dapat diciutkan di UI. Di Android 14, ini akan ditampilkan sebagai entri dengan statusnya sendiri yang dialihkan ke subhalaman.

Kelompok tanpa kewarganegaraan

Grup yang memiliki judul namun tidak memiliki ringkasan, dan stateLessIconType="none" dianggap tanpa kewarganegaraan dan tidak berkontribusi terhadap status Pusat Keamanan secara keseluruhan:

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

Grup seperti itu akan ditampilkan sebagai daftar entri yang kaku di UI.

Grup tersembunyi

Grup tersembunyi hanya berisi sumber keamanan khusus masalah dan tidak memiliki judul. Grup tersembunyi tidak muncul di UI:

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

Data dinamis untuk entri statis

Anda dapat menampilkan sumber Pusat Keamanan dinamis sebagai entri statis, yang memungkinkan mendorong entri pengalihan bergantung pada beberapa kondisi, dan memungkinkan penyesuaian kontennya saat runtime. Tentukan sumber dinamis dalam grup tanpa kewarganegaraan, misalnya, bergantung pada entri info kebijakan kerja Anda.

Contoh ini menunjukkan sumber keamanan dinamis yang tidak memberikan sinyal keamanan, karena berada dalam grup tanpa kewarganegaraan:

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

Dalam contoh ini, sumber hanya dapat menampilkan kartu peringatan hijau dan memberikan status yang tidak ditentukan. Untuk dapat memberikan data lain, sumbernya harus berada dalam grup stateful.

Sesuaikan string dan bidang overlay

Untuk perangkat GMS yang tidak dikonfigurasi untuk menerima pembaruan Mainline, alih-alih menghamparkan seluruh file konfigurasi, Anda dapat menghamparkan enam sumber daya string untuk memenuhi semua kebutuhan penyesuaian. Sumber daya string yang dihamparkan tercantum dalam tabel.

Sumber daya string Keterangan
google_lock_screen_sources_summary Hamparkan nilai ini untuk menentukan ringkasan statis yang ditampilkan untuk grup AndroidLockScreenSources ketika semua sumber dalam grup berada dalam kondisi baik (informasi atau tingkat keparahan tidak ditentukan). Secara default, Pusat Keamanan menampilkan judul semua sumber dalam grup yang digabungkan sebagai ringkasan grup.
google_biometrics_title Hamparkan nilai ini untuk menentukan judul statis untuk sumber biometrik yang dimiliki oleh paket com.android.settings yang digunakan ketika tidak ada data dinamis yang disediakan oleh sumber. Hamparkan ini saat juga melapisi judul yang disediakan secara dinamis oleh sumber dalam paket com.android.settings . Ini diabaikan secara default karena status tampilan awal untuk sumbernya hidden .
google_biometrics_summary Hamparkan nilai ini untuk menentukan ringkasan statis untuk sumber biometrik yang dimiliki oleh paket com.android.settings yang digunakan ketika tidak ada data dinamis yang disediakan oleh sumber. Ini diabaikan secara default karena status tampilan awal untuk sumbernya hidden .
google_biometrics_search_terms Hamparkan nilai ini untuk menentukan daftar istilah penelusuran untuk sumber biometrik yang dimiliki oleh paket com.android.settings .
google_biometrics_initial_display_state Hamparkan nilai ini untuk menampilkan entri UI untuk sumber biometrik yang dimiliki oleh paket com.android.settings ketika tidak ada data dinamis yang disediakan oleh sumber. Nilai defaultnya adalah hidden .
google_security_updates_intent Hamparkan nilai ini untuk mengubah maksud yang diperlukan untuk membuka aktivitas yang memungkinkan pengguna memeriksa dan menginstal pembaruan keamanan. Tindakan maksud ini harus dikaitkan dengan aktivitas yang diekspor. Nilai defaultnya adalah android.settings.SYSTEM_UPDATE_SETTINGS .

Tidak ada string lain dalam paket com.google.android.safetycenter.resources yang dapat dihamparkan.

Untuk perangkat AOSP, semua sumber daya dalam paket com.android.safetycenter.resources dapat dihamparkan tanpa batasan konten.

Untuk perangkat GMS yang tidak dikonfigurasi untuk menerima pembaruan Mainline, buat paket com.google.android.safetycenter.resources yang menggantikan atau melapisi com.android.safetycenter.resources yang menentukan semua string yang diharapkan oleh pengujian GTS.

String ini adalah:

  • 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

Persyaratan Kustomisasi

Persyaratan format file

File konfigurasi harus berupa file XML dan mengikuti format yang dijelaskan dalam Memperbarui file konfigurasi . Filenya harus ada di folder raw . Ini harus memenuhi invarian yang dijelaskan dalam grup Sesuaikan sumber Pusat Keamanan dan Sesuaikan sumber Pusat Keamanan . Jika file konfigurasi tidak terbentuk dengan baik sesuai dengan persyaratan di atas, fitur tersebut dinonaktifkan sepenuhnya. Penguraian file ini juga didukung oleh pengujian CTS dan GTS yang dapat memberikan konteks tambahan jika file tidak terbentuk dengan baik (di atas log perangkat logcat ).

Perangkat layanan Google

Pada perangkat GMS, beberapa batasan diberlakukan pada file ini. Hal ini didukung oleh tes GTS .

Perangkat AOSP

Pada perangkat AOSP, file konfigurasi harus terbentuk dengan baik dan lulus tes CTS untuk Safety Center. Tes memverifikasi bahwa file tersebut terbentuk dengan baik. Perangkat GMS juga harus lulus tes ini.