ปรับแต่งศูนย์ความปลอดภัย

เปิดหรือปิดใช้ศูนย์ความปลอดภัย

หากต้องการเปิดหรือปิดใช้ศูนย์ความปลอดภัย ให้ใช้ช่องบูลีน config_enableSafetyCenter ที่วางซ้อนได้ในไฟล์ frameworks/base/core/res/res/values/config.xml

อุปกรณ์ส่วนใหญ่รองรับศูนย์ความปลอดภัยโดยค่าเริ่มต้น เช่น บนโทรศัพท์และแท็บเล็ต ในอุปกรณ์บางรูปแบบ ระบบจะปิดใช้ศูนย์ความปลอดภัยโดยค่าเริ่มต้น เช่น Auto, TV และ 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>

หากต้องการรองรับศูนย์ความปลอดภัย ให้ตั้งค่า config_enableSafetyCenter เป็น true หากไม่ต้องการรองรับศูนย์ความปลอดภัย ให้ตั้งค่านี้เป็น false เพื่อปิดใช้

เมื่อปิดใช้ศูนย์ความปลอดภัย ระบบจะเปิดแอปการตั้งค่าแทนหากมีการพยายามเปลี่ยนเส้นทางไปยังหน้าความปลอดภัยและความเป็นส่วนตัว ระบบจะละเว้นความพยายามใดๆ ในการโต้ตอบกับ API หรือแสดงผลค่าเริ่มต้น การ์ดการตั้งค่าด่วนที่เกี่ยวข้องและรายการการตั้งค่าจะแสดงหรือซ่อนด้วย โดยขึ้นอยู่กับว่ามีการเปิดใช้ศูนย์ความปลอดภัยหรือไม่

Flag DeviceConfig

นอกเหนือจากการเปิดใช้ศูนย์ความปลอดภัยโดยใช้การกำหนดค่า config_enableSafetyCenter แล้ว ยังมีการใช้ DeviceConfig Flag (safety_center_is_enabled) เพื่อเปิดหรือปิดใช้ศูนย์ความปลอดภัยจากระยะไกลอีกด้วย

ใน Android 14 ขึ้นไป คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมเนื่องจากแฟล็กนี้คือ true โดยค่าเริ่มต้น

ใน Android 13 ศูนย์ความปลอดภัยจะปิดใช้โดยค่าเริ่มต้นฝั่งเซิร์ฟเวอร์และเปิดใช้โดยรายการที่อนุญาตโดยใช้ Flag นี้ ให้ส่งลายนิ้วมือของอุปกรณ์และติดต่อ TAM ของคุณเพื่อเพิ่มไปยังรายการที่อนุญาต โปรดทราบว่าคุณต้องเพิ่มเวอร์ชันหลัก M-2022-11 ขึ้นไปลงในรายการที่อนุญาต สำหรับการพัฒนาและการทดสอบในเครื่อง คุณจะเปิดหรือปิดใช้ Flag ในเครื่องได้ (จนกว่าจะรีบูต) ด้วยคำสั่ง adb ตัวอย่างเช่น หากต้องการเปิดใช้ 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

หากต้องการยืนยันว่ามีการเปิดใช้ศูนย์ความปลอดภัยหรือไม่ ให้ทำดังนี้

adb root
adb shell cmd safety_center enabled

ผลลัพธ์จะแสดงว่าเปิดใช้ศูนย์ความปลอดภัยในอุปกรณ์อย่างถูกต้องหรือไม่

อัปเดตไฟล์การกำหนดค่า

ใช้ไฟล์การกำหนดค่า safety_center_config.xml เพื่อแก้ไขเนื้อหาของหน้าจอศูนย์ความปลอดภัย คุณสามารถวางซ้อนไฟล์นี้ได้โดยสมมติว่าคุณมีคุณสมบัติตรงตามข้อกำหนดในการปรับแต่ง

วางซ้อนไฟล์การกําหนดค่า

หากต้องการวางซ้อนไฟล์ safety_center_config.xml โปรดดูข้อมูลเกี่ยวกับการแก้ไขการวางซ้อนทรัพยากรรันไทม์ (RRO) ได้ที่เปลี่ยนค่าของทรัพยากรแอปที่รันไทม์

ใน Android 14 โปรดตรวจสอบว่าได้วางซ้อนไฟล์ res/raw-v34/safety_center_config.xml ไม่ใช่ res/raw/safety_center_config.xml เนื่องจากไฟล์ res/raw-v34/safety_center_config.xml มีความสำคัญมากกว่า (ข้อกำหนดนี้มีผลกับไฟล์อื่นๆ ที่มีขอบเขตสำหรับ v34 ด้วย เช่น res/values-v34/strings.xml) แพ็กเกจการวางซ้อนต้องมี SDK ขั้นต่ำต่ำกว่า 34 มิฉะนั้นระบบอาจตัดข้อกำหนด v34 ออกในระหว่างการเพิ่มประสิทธิภาพ นอกจากนี้ โปรดใช้การวางซ้อนแบบคงที่ เนื่องจากระบบจะโหลดค่านี้ในช่วงที่บูต

สำหรับอุปกรณ์ Android Open Source Project (AOSP) ให้กำหนดเป้าหมายแพ็กเกจ com.android.safetycenter.resources ไม่มีการกำหนดค่าการวางซ้อนที่จะกําหนดเป้าหมาย ทรัพยากรทั้งหมดวางซ้อนกันได้โดยไม่มีข้อจำกัดด้านเนื้อหา

สําหรับอุปกรณ์ GMS ที่กำหนดค่าให้รับการอัปเดตเมนไลน์ ให้กําหนดเป้าหมายแพ็กเกจ com.google.android.safetycenter.resources กำหนดเป้าหมายการกำหนดค่า SafetyCenterConfig การกำหนดค่านี้กำหนดให้แพ็กเกจการวางซ้อนอยู่ในพาร์ติชัน product, system หรือ vendor GMS OEM ควรคัดลอกไฟล์safety_center_config.xmlที่ Google ให้ไว้ และจำกัดการแก้ไขที่การทดสอบ GTS อนุญาต คําจํากัดความของการวางซ้อนควรมีลักษณะใกล้เคียงกับตัวอย่างต่อไปนี้

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

สําหรับอุปกรณ์ GMS ที่ไม่ได้กําหนดค่าให้รับการอัปเดต Mainline ให้กําหนดเป้าหมายแพ็กเกจ com.android.safetycenter.resources ไม่มีการกำหนดค่าการวางซ้อน ที่จะกำหนดเป้าหมาย แพ็กเกจการวางซ้อนต้องใช้ชื่อแพ็กเกจ com.google.android.safetycenter.resources

GMS OEM ควรคัดลอกไฟล์ safety_center_config.xml ที่ Google ให้ไว้และจำกัดการแก้ไขที่การทดสอบ GTS อนุญาต GMS OEM ต้องกำหนดสตริงที่ใช้ในการกำหนดค่า XML ด้วย

โครงสร้างไฟล์

ไฟล์ safety_center_config.xml คือรายการแหล่งข้อมูลความปลอดภัย ระบบจะจัดระเบียบแหล่งที่มาของความปลอดภัยเหล่านี้เป็นกลุ่มๆ เพื่อจัดการสัญญาณบนหน้าจอศูนย์ความปลอดภัย เช่น ความปลอดภัยของแอป หรือการล็อกหน้าจอ ลําดับของรายการนี้กําหนดลําดับการแสดง

<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

ไฟล์การกำหนดค่า AOSP อยู่ใน packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml

ใน Android 13 ไฟล์การกําหนดค่า Google มีดังนี้

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

ใน Android 14 ไฟล์การกำหนดค่าของ Google คือ

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

ใน Android 15 ไฟล์การกำหนดค่าของ Google คือ

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                deduplicationGroup="AppSecurity"/>
            <issue-only-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                loggingAllowed="false"
                deduplicationGroup="AppSecurity"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                notificationsAllowed="true"
                maxSeverityLevel="300"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"/>
            <dynamic-safety-source
                id="GoogleAutoLock"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                maxSeverityLevel="0"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePasswordCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_private_profile"
                searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
                initialDisplayState="hidden"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
            <dynamic-safety-source
                id="GoogleBackupAndRestore"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                title="@com.google.android.safetycenter.resources:string/google_backup_title"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidCellularNetworkSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_cellular_network_security_title"
            summary="@com.google.android.safetycenter.resources:string/google_cellular_network_security_summary">
            <dynamic-safety-source
                id="AndroidCellularNetworkSecurity"
                packageName="com.android.phone"
                profile="primary_profile_only"
                notificationsAllowed="true"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary">
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="GoogleAdsIdentity"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
            <dynamic-safety-source
                id="AndroidHealthConnect"
                profile="primary_profile_only"
                packageName="com.google.android.healthconnect.controller"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="false"
                title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivacyAppDataSharingUpdates"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"
                title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <static-safety-source
                id="GoogleActivityControls"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySourcesAdditional"
            title="@com.google.android.safetycenter.resources:string/google_privacy_additional_title">
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivateSpace"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_private_space_title"
                summary="@com.google.android.safetycenter.resources:string/google_private_space_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_private_space_search_terms"
                initialDisplayState="hidden"
                maxSeverityLevel="0"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidMoreSettings"
                profile="primary_profile_only"
                intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
                summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

ปรับแต่งแหล่งที่มาของศูนย์ความปลอดภัย

ประเภทแหล่งที่มาของศูนย์ความปลอดภัย

แหล่งที่มาอาจเป็นแบบไดนามิก แบบเฉพาะปัญหา หรือแบบคงที่ โดยขึ้นอยู่กับประเภทข้อมูลที่ให้ไว้กับศูนย์ความปลอดภัย

แหล่งที่มาแบบไดนามิก

ทำเครื่องหมายแหล่งข้อมูลความปลอดภัยเป็น dynamic-safety-source หากสามารถให้ข้อมูลแบบไดนามิกแก่ศูนย์ความปลอดภัยทั้งสำหรับข้อมูลและการ์ดคำเตือนที่อาจเกิดขึ้น

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

แหล่งที่มาเฉพาะปัญหา

ทําเครื่องหมายแหล่งที่มาเป็น issue-only-safety-source หากไม่มีรายการการตั้งค่าที่เชื่อมโยง แต่ยังคงมีคำเตือน คุณจะระบุได้เฉพาะคำเตือนเท่านั้น การให้รายการการตั้งค่าจะทำให้เกิดข้อผิดพลาด

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

แหล่งที่มาแบบคงที่

ทำเครื่องหมายแหล่งที่มาเป็น static-safety-source หากเป็นรายการการเปลี่ยนเส้นทางที่ไม่มีข้อมูลแบบไดนามิก

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

การกำหนดค่าแหล่งที่มาของศูนย์ความปลอดภัย

ช่องไฟล์การกำหนดค่าเป็นช่องที่ไม่บังคับ จำเป็น หรือไม่อนุญาต และกำหนดได้ดังต่อไปนี้ ทั้งนี้ขึ้นอยู่กับประเภทแหล่งที่มาของศูนย์ความปลอดภัยและตัวแปรอื่นๆ

  • id
    • ตัวระบุที่ไม่ซ้ำกันสำหรับแหล่งที่มาของความปลอดภัย ต้องไม่ซ้ำกันตลอดทั้งไฟล์ และต้องประกอบด้วยอักขระที่เป็นตัวอักษรเท่านั้น (a-z, A-Z) และคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
    • ประเภทสตริง
    • ต้องระบุสำหรับแหล่งที่มาความปลอดภัยทุกประเภท
  • packageName
    • ชื่อของแพ็กเกจที่เป็นเจ้าของแหล่งที่มาของความปลอดภัยนี้ เช่น com.google.android.permissioncontroller
    • ประเภทสตริง
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและแบบเฉพาะปัญหาเท่านั้น
    • ห้ามใช้สำหรับแหล่งข้อมูลที่ปลอดภัยแบบคงที่ใน Android 13 และใน Android 14 ตัวเลือกนี้ตั้งค่าให้กำหนดเป้าหมายเป็น intentAction ของแหล่งที่มาแบบชัดแจ้งแทนโดยนัยได้ (ดูรายละเอียดเพิ่มเติมในเอกสารประกอบเกี่ยวกับความตั้งใจ)
  • initialDisplayState
    • ลักษณะที่รายการ UI แสดงเมื่อแหล่งข้อมูลความปลอดภัยไม่ได้ให้ข้อมูล
    • ประเภท enum ที่แสดงเป็นสตริงต้องเป็นอย่างใดอย่างหนึ่งต่อไปนี้
      • enabled (ค่าเริ่มต้น แสดงปกติ)
      • disabled (แสดงเป็นสีเทา ไม่สามารถคลิกได้)
      • hidden (ไม่แสดง)
    • ไม่บังคับสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิก (ค่าเริ่มต้นคือ enabled)
    • ไม่ได้รับอนุญาตสำหรับแหล่งข้อมูลด้านความปลอดภัยที่มีเฉพาะปัญหาเท่านั้นและแบบคงที่
  • profile
    • แหล่งที่มาของความปลอดภัยนี้โต้ตอบกับโปรไฟล์ที่มีการจัดการของผู้ใช้หรือไม่
    • ประเภท Enum ที่แสดงเป็นสตริงต้องเป็นอย่างใดอย่างหนึ่งต่อไปนี้
      • primary_profile_only (โต้ตอบกับผู้ปกครองเท่านั้น)
      • all_profiles (ยังสามารถโต้ตอบกับโปรไฟล์ที่มีการจัดการและ เริ่มใช้โปรไฟล์ส่วนตัวใน Android 15 ได้ด้วย)
    • ในวันที่ all_profiles จะมีการสร้างรายการ UI หลายรายการ (รายการหนึ่งสำหรับระดับบนสุดของโปรไฟล์ และอีก 1 รายการสำหรับแต่ละโปรไฟล์ที่มีการจัดการ) แหล่งข้อมูลความปลอดภัยจะให้ข้อมูลที่แตกต่างกันสำหรับแต่ละโปรไฟล์ได้
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยทั้งหมด
  • searchTerms
    • รายการข้อความค้นหาที่จับคู่กับรายการศูนย์ความปลอดภัยเมื่อใช้การค้นหาในแอปการตั้งค่า
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_search_terms
    • ไม่บังคับสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและแบบคงที่ (ค่าเริ่มต้นคือไม่มีข้อความค้นหา)
    • ไม่อนุญาตสำหรับแหล่งที่มาของความปลอดภัยที่มีเฉพาะปัญหา
  • title
    • ชื่อเริ่มต้นของรายการ UI ใช้เมื่อไม่ได้ระบุข้อมูลแบบไดนามิกโดยแหล่งที่มา
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_title
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและคงที่ (เว้นแต่จะเป็น initialDisplayState="hidden" ที่ไม่มี searchTerms)
    • ไม่ได้รับอนุญาตสำหรับแหล่งข้อมูลด้านความปลอดภัยที่เป็นปัญหาเท่านั้น
  • titleForWork
    • ชื่อเริ่มต้นของรายการ UI สำหรับโปรไฟล์ที่มีการจัดการที่ใช้เมื่อแหล่งที่มาไม่ได้ให้ข้อมูลแบบไดนามิก
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_title_for_work
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและคงที่ที่ระบุ profile="all_profiles" (ยกเว้น initialDisplayState="hidden" ที่ไม่มี searchTerms)
    • ไม่ได้รับอนุญาตสำหรับแหล่งที่มาหรือแหล่งที่มาด้านความปลอดภัยที่เป็นปัญหาเท่านั้นที่มี profile="primary_profile_only"
  • summary
    • สรุปเริ่มต้นของรายการ UI (นี่คือคำอธิบายแบบข้อความที่ยาวขึ้นซึ่งแสดงใต้ชื่อ) ซึ่งจะใช้เมื่อแหล่งที่มาไม่ได้ให้ข้อมูลแบบไดนามิก
    • รหัสทรัพยากรที่แสดงเป็นชื่อทรัพยากรแบบเต็ม เช่น @package:string/my_summary
    • ไม่บังคับสำหรับแหล่งที่มาของความปลอดภัยแบบคงที่ (ค่าเริ่มต้นคือไม่มีข้อมูลสรุป)
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิก (เว้นแต่ initialDisplayState จะ hidden)
    • ไม่ได้รับอนุญาตสำหรับแหล่งข้อมูลด้านความปลอดภัยที่เป็นปัญหาเท่านั้น
  • intentAction
    • การทำงานที่จะทริกเกอร์เมื่อมีการคลิกรายการ UI
    • ประเภทสตริง เช่น com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS หรือรหัสทรัพยากรที่แสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_intent_action
    • หากการดำเนินการตาม Intent นี้ไม่ได้รับการแก้ไขสำหรับ packageName ที่ระบุ (หากมี) รายการ UI จะทำงานในลักษณะเดียวกับที่มี initialDisplayState="disabled"
    • จำเป็นสำหรับแหล่งที่มาความปลอดภัยแบบคงที่และแหล่งที่มาความปลอดภัย dynamic ที่มี initialDisplayState="enabled"
    • ไม่อนุญาตสำหรับแหล่งที่มาของความปลอดภัยที่มีเฉพาะปัญหา
  • maxSeverityLevel
    • ระดับความรุนแรงสูงสุดที่แหล่งที่มาของศูนย์ความปลอดภัยนี้ระบุได้
    • จํานวนเต็มแสดงเป็นสตริง เช่น 300
    • ไม่บังคับสำหรับแหล่งข้อมูลด้านความปลอดภัยแบบไดนามิกและเฉพาะปัญหาเท่านั้น (ค่าเริ่มต้นคือจำนวนสูงสุด)
    • ไม่อนุญาตสำหรับแหล่งที่มาของความปลอดภัยแบบคงที่
  • loggingAllowed
    • ศูนย์ความปลอดภัยจะบันทึกการโต้ตอบหรือข้อมูลที่เกี่ยวข้องกับแหล่งที่มานี้ได้หรือไม่
    • บูลีนแสดงเป็นสตริง เช่น false
    • ไม่บังคับสำหรับแหล่งที่มาด้านความปลอดภัยแบบไดนามิกและเฉพาะปัญหาเท่านั้น (ค่าเริ่มต้นคือ true)
    • ห้ามใช้สำหรับแหล่งที่มาความปลอดภัยแบบคงที่
  • refreshOnPageOpenAllowed
    • กำหนดว่าควรส่งสัญญาณไปยังแหล่งข้อมูลความปลอดภัยเพื่อรีเฟรชข้อมูลหรือไม่เมื่อเปิดหน้าจอศูนย์ความปลอดภัย
    • บูลีนจะแสดงเป็นสตริง เช่น true
    • ไม่บังคับสำหรับแหล่งที่มาด้านความปลอดภัยแบบไดนามิกและเฉพาะปัญหาเท่านั้น (ค่าเริ่มต้นคือ false)
    • ห้ามใช้สำหรับแหล่งที่มาความปลอดภัยแบบคงที่
  • notificationsAllowed (ตั้งแต่ Android 14 เป็นต้นไป)
    • แหล่งที่มาของความปลอดภัยสามารถเลือกที่จะส่งการแจ้งเตือนหรือไม่ เมื่อรายงานปัญหา
    • บูลีนจะแสดงเป็นสตริง เช่น true
    • ไม่บังคับสำหรับแหล่งที่มาด้านความปลอดภัยแบบไดนามิกและเฉพาะปัญหาเท่านั้น (ค่าเริ่มต้นคือ false)
    • ห้ามใช้สำหรับแหล่งที่มาความปลอดภัยแบบคงที่
  • deduplicationGroup (ตั้งแต่ Android 14)
    • ตัวระบุที่ไม่ซ้ำกันที่เป็นไปได้ซึ่งใช้เพื่อกรองปัญหาที่ซ้ำกันซึ่งมาจากแหล่งที่มาต่างๆ ออก แหล่งที่มาภายในกลุ่มการกรองข้อมูลที่ซ้ำกันออกเดียวกันอาจส่งปัญหาที่มีรหัสการกรองข้อมูลที่ซ้ำกันออกซึ่งไม่บังคับ ปัญหาที่มีรหัสการกรองข้อมูลที่ซ้ำกันออกเดียวกันจะแสดงใน UI เพียงครั้งเดียว แม้ว่าจะมีการส่งปัญหาจากหลายแหล่งก็ตาม
    • ประเภทสตริง
    • ไม่บังคับสำหรับแหล่งข้อมูลด้านความปลอดภัยแบบไดนามิกและเฉพาะปัญหาเท่านั้น (ค่าเริ่มต้นคือไม่มีการกรองข้อมูลที่ซ้ำกันออก)
    • ไม่อนุญาตสำหรับแหล่งที่มาของความปลอดภัยแบบคงที่
  • packageCertificateHashes (ตั้งแต่ Android 14)
    • รายการแฮชใบรับรองที่คั่นด้วยคอมมาสำหรับ packageName ที่ระบุ หากตั้งค่าไว้ ระบบจะตรวจสอบใบรับรอง packageCertificateHashes ที่ให้ไว้สำหรับ packageName ที่ให้ไว้เมื่อโต้ตอบกับแหล่งที่มาของความปลอดภัยเพื่อวัตถุประสงค์ด้านความปลอดภัย
    • ประเภทสตริง
    • ไม่บังคับสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและแบบเฉพาะปัญหา (ค่าเริ่มต้นคือไม่ตรวจสอบใบรับรอง)
    • ไม่อนุญาตสำหรับแหล่งที่มาของความปลอดภัยแบบคงที่
  • titleForPrivateProfile (ตั้งแต่ Android 15 เป็นต้นไป)
    • ชื่อเริ่มต้นของรายการ UI สำหรับโปรไฟล์ส่วนตัวที่จะใช้เมื่อแหล่งที่มาไม่ได้ให้ข้อมูลแบบไดนามิก
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_title_for_private_profile
    • ต้องระบุสำหรับแหล่งที่มาของความปลอดภัยแบบไดนามิกและคงที่ที่ระบุ profile="all_profiles" (ยกเว้น initialDisplayState="hidden" ที่ไม่มี searchTerms)
    • ไม่ได้รับอนุญาตสำหรับแหล่งข้อมูลด้านความปลอดภัยที่มีเฉพาะปัญหาเท่านั้น หรือแหล่งที่มาที่มี profile="primary_profile_only"

ปรับแต่งกลุ่มแหล่งที่มาของศูนย์ความปลอดภัย

แหล่งที่มาของศูนย์ความปลอดภัยต้องอยู่ภายในกลุ่มแหล่งที่มาของศูนย์ความปลอดภัย กลุ่มแหล่งที่มาแต่ละกลุ่มจะแสดงใน UI ตามลำดับที่กลุ่มแหล่งที่มาแสดงในไฟล์ แหล่งที่มาแต่ละรายการจะแสดงภายในกลุ่มตามลําดับที่แหล่งที่มาแสดงในไฟล์ หากกลุ่มมีแหล่งที่มาด้านความปลอดภัยแหล่งเดียว ก็จะแสดงเป็นรายการเดียวแทนที่จะเป็นกลุ่ม

แหล่งที่มาของการกำหนดค่ากลุ่มในศูนย์ความปลอดภัย

ใช้ตัวแปรต่อไปนี้เพื่อปรับแต่งกลุ่มแหล่งที่มาของศูนย์ความปลอดภัย

  • id
    • ตัวระบุที่ไม่ซ้ำกันสำหรับกลุ่มแหล่งที่มาความปลอดภัย ซึ่งต้องไม่ซ้ำกันในไฟล์ทั้งไฟล์
    • ประเภทสตริง
    • ต้องระบุ
  • title
    • ชื่อกลุ่มใน UI
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_title
    • ต้องระบุหากมีแหล่งที่มาของความปลอดภัยแบบไดนามิกหรือแบบคงที่อย่างน้อย 1 แหล่งภายในกลุ่ม (กล่าวคือ กลุ่มไม่ใช่ type="hidden")
  • summary
    • คำอธิบายสั้นๆ ของกลุ่มใน UI แสดงอยู่ใต้ชื่อ แสดงภายใต้เงื่อนไขบางอย่าง โดยทั่วไปเมื่อไม่มีการให้ข้อมูล มิเช่นนั้น ข้อมูลสรุปจะคำนวณตามข้อมูลที่ให้ไว้โดยแหล่งที่มาภายในกลุ่ม
    • รหัสทรัพยากรแสดงเป็นชื่อทรัพยากรที่สมบูรณ์ในตัวเอง เช่น @package:string/my_summary
    • ไม่บังคับ (ค่าเริ่มต้นคือไม่มีสรุป)
  • statelessIconType
    • ประเภทไอคอนที่แสดงสำหรับกลุ่มเมื่อแหล่งที่มาของความปลอดภัยไม่ได้ระบุสถานะ เช่น รายการแบบคงที่
    • ประเภท enum ที่แสดงเป็นสตริงที่ต้องเป็น none หรือ privacy (ประเภทไอคอนความเป็นส่วนตัว)
    • ไม่บังคับ (ค่าเริ่มต้นคือ none)
  • type (ตั้งแต่ Android 14)
    • ประเภทที่อาจไม่เหมาะสมเพื่อกำหนดวิธีที่กลุ่มนี้โต้ตอบกับศูนย์ความปลอดภัย
    • ประเภท Enum ที่แสดงเป็นสตริงต้องเป็นอย่างใดอย่างหนึ่งต่อไปนี้
      • stateful (แสดงและส่งผลต่อสถานะโดยรวมของศูนย์ความปลอดภัย)
      • stateless (แสดงและไม่ส่งผลต่อสถานะโดยรวมของ Safety Center)
      • hidden (ไม่แสดง แหล่งที่มาทั้งหมดต้องเป็นปัญหาเท่านั้น)
    • ไม่บังคับ ระบบจะอนุมานโดยค่าเริ่มต้นโดยใช้แหล่งข้อมูลความปลอดภัยที่อยู่ในกลุ่ม รวมถึง summary และ statelessIconType หากมีการระบุ type จะมีการบังคับใช้ตัวแปรเพิ่มเติมเพื่อตรวจสอบว่าตรงกับแหล่งที่มาที่พบในกลุ่ม (เช่น กลุ่มจะเป็น hidden ไม่ได้หากมีรายการที่ผู้ใช้มองเห็นได้)

ประเภทกลุ่มแหล่งที่มาของศูนย์ความปลอดภัย

กลุ่มแหล่งที่มาของศูนย์ความปลอดภัยจะได้รับการจัดประเภทเป็นเก็บสถานะ ไม่เก็บสถานะ หรือซ่อน ตามสถานะของบางช่อง

กลุ่มที่เก็บสถานะ

กลุ่มที่มีทั้งชื่อและข้อมูลสรุป หรือstateLessIconType="privacy"ถือว่ามีสถานะจะส่งผลต่อสถานะโดยรวมของศูนย์ความปลอดภัย ดังนี้

อย่างชัดเจน
<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>

ใน Android 13 กลุ่มดังกล่าวจะแสดงเป็นรายการที่ยุบได้ใน UI ใน Android 14 รายการนี้จะแสดงเป็นรายการที่มีสถานะของตัวเองซึ่งเปลี่ยนเส้นทางไปยังหน้าย่อย

กลุ่มที่ไม่เก็บสถานะ

กลุ่มที่มีชื่อแต่ไม่มีข้อมูลสรุป และ stateLessIconType="none" จะถือว่าไม่เก็บสถานะและไม่ได้มีผลต่อสถานะโดยรวมของศูนย์ความปลอดภัย

อย่างชัดเจน
<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>

กลุ่มดังกล่าวจะแสดงเป็นรายการที่เข้มงวดใน UI

กลุ่มที่ซ่อนอยู่

กลุ่มที่ซ่อนจะมีเฉพาะแหล่งข้อมูลด้านความปลอดภัยที่เกี่ยวข้องกับปัญหาเท่านั้นและไม่มีชื่อ กลุ่มที่ซ่อนจะไม่ปรากฏใน 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>

ข้อมูลแบบไดนามิกสำหรับรายการแบบคงที่

คุณสามารถแสดงแหล่งที่มาของศูนย์ความปลอดภัยแบบไดนามิกเป็นรายการแบบคงที่ได้ ซึ่งจะอนุญาตให้พุชรายการเปลี่ยนเส้นทางโดยขึ้นอยู่กับเงื่อนไขบางอย่าง และอนุญาตให้ปรับแต่งเนื้อหาขณะรันไทม์ได้ กําหนดแหล่งที่มาแบบไดนามิกภายในกลุ่มที่ไม่มีสถานะ เช่น ขึ้นอยู่กับรายการข้อมูลนโยบายการทำงาน

ตัวอย่างนี้แสดงแหล่งที่มาความปลอดภัยแบบไดนามิกที่ไม่ได้ให้สัญญาณความปลอดภัย เนื่องจากอยู่ในกลุ่มแบบไม่เก็บสถานะ

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

ในตัวอย่างนี้ แหล่งที่มาสามารถพุชได้เฉพาะการ์ดคำเตือนสีเขียวและระบุสถานะที่ไม่ระบุ แหล่งที่มาต้องอยู่ภายในกลุ่มที่เก็บสถานะ เพื่อให้ระบุข้อมูลอื่นๆ ได้

ปรับแต่งสตริงและช่องวางซ้อน

สำหรับอุปกรณ์ GMS ที่ไม่ได้รับการกำหนดค่าให้รับการอัปเดตเมนไลน์ แทนที่จะวางซ้อนไฟล์การกำหนดค่าทั้งหมด คุณสามารถซ้อนทับทรัพยากรสตริง 6 รายการเพื่อตอบสนองความต้องการในการปรับแต่งทั้งหมด ทรัพยากรสตริงที่เป็นการวางซ้อนจะแสดงอยู่ในตาราง

ทรัพยากรสตริง คำอธิบาย
google_lock_screen_sources_summary วางซ้อนค่านี้เพื่อกำหนดข้อมูลสรุปแบบคงที่ที่จะแสดงสำหรับกลุ่ม AndroidLockScreenSources เมื่อแหล่งที่มาทั้งหมดในกลุ่มอยู่ในสถานะดี (ระดับความรุนแรงเป็นข้อมูลหรือไม่ได้ระบุ) โดยค่าเริ่มต้น ศูนย์ความปลอดภัยจะแสดงชื่อแหล่งที่มาทั้งหมดในกลุ่มที่ต่อท้ายกันเป็นข้อมูลสรุปของกลุ่ม
google_biometrics_title วางซ้อนค่านี้เพื่อกําหนดชื่อแบบคงที่สําหรับแหล่งที่มาข้อมูลไบโอเมตริกที่เป็นของแพ็กเกจ com.android.settings ซึ่งใช้เมื่อแหล่งที่มาไม่ได้ให้ข้อมูลแบบไดนามิก วางซ้อนข้อมูลนี้เมื่อวางซ้อนชื่อที่แหล่งที่มาให้ไว้ในแพ็กเกจ com.android.settings แบบไดนามิกด้วย ระบบจะละเว้นค่านี้โดยค่าเริ่มต้นเนื่องจากสถานะการแสดงผลเริ่มต้นของแหล่งที่มาคือ hidden
google_biometrics_summary วางซ้อนค่านี้เพื่อกำหนดข้อมูลสรุปแบบคงที่สำหรับแหล่งข้อมูลไบโอเมตริกที่เป็นของแพ็กเกจ com.android.settings ที่ใช้เมื่อแหล่งที่มาไม่ได้ให้ข้อมูลแบบไดนามิก ระบบจะไม่สนใจค่านี้โดยค่าเริ่มต้นเนื่องจากสถานะการแสดงผลเริ่มต้นของแหล่งที่มาคือhidden
google_biometrics_search_terms วางซ้อนค่านี้เพื่อกำหนดรายการข้อความค้นหาสำหรับแหล่งข้อมูลไบโอเมตริกที่แพ็กเกจ com.android.settings เป็นเจ้าของ
google_biometrics_initial_display_state วางซ้อนค่านี้เพื่อแสดงรายการ UI ของแหล่งที่มาข้อมูลไบโอเมตริกที่เป็นของแพ็กเกจ com.android.settings เมื่อแหล่งที่มาไม่ได้ระบุข้อมูลแบบไดนามิก ค่าเริ่มต้นคือ hidden
google_security_updates_intent วางซ้อนค่านี้เพื่อเปลี่ยน Intent ที่จําเป็นในการเปิดกิจกรรมที่อนุญาตให้ผู้ใช้ตรวจสอบและติดตั้งการอัปเดตความปลอดภัย ต้องเชื่อมโยงการดำเนินการผ่าน Intent นี้กับกิจกรรมที่ส่งออก ค่าเริ่มต้นคือ android.settings.SYSTEM_UPDATE_SETTINGS

สตริงอื่นๆ ในแพ็กเกจ com.google.android.safetycenter.resources จะวางซ้อนไม่ได้

สำหรับอุปกรณ์ AOSP ทรัพยากรทั้งหมดในแพ็กเกจ com.android.safetycenter.resources จะวางซ้อนได้โดยไม่มีข้อจำกัดในเนื้อหา

สำหรับอุปกรณ์ GMS ที่ไม่ได้กำหนดค่าให้รับการอัปเดตเมนไลน์ ให้สร้างแพ็กเกจ com.google.android.safetycenter.resources แทนที่หรือซ้อนทับ com.android.safetycenter.resources เพื่อกำหนดสตริงทั้งหมดที่การทดสอบ GTS คาดหวัง

สตริงเหล่านี้ได้แก่

  • 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

ข้อกำหนดการปรับแต่ง

ข้อกำหนดรูปแบบไฟล์

ไฟล์การกำหนดค่าต้องเป็นไฟล์ XML และเป็นไปตามรูปแบบที่อธิบายไว้ในอัปเดตไฟล์การกำหนดค่า ไฟล์ต้องอยู่ในโฟลเดอร์ raw โดยต้องเป็นไปตามตัวแปรที่อธิบายไว้ในส่วนปรับแต่งแหล่งที่มาของศูนย์ความปลอดภัยและปรับแต่งกลุ่มแหล่งที่มาของศูนย์ความปลอดภัย หากไฟล์การกําหนดค่ามีรูปแบบไม่ถูกต้องตามข้อกําหนดข้างต้น ระบบจะปิดใช้ฟีเจอร์นี้โดยสมบูรณ์ การแยกวิเคราะห์ไฟล์นี้ยังได้รับการสนับสนุนจากการทดสอบ CTS และ GTS ที่สามารถให้บริบทเพิ่มเติมในกรณีที่ไฟล์มีรูปแบบไม่ถูกต้อง (นอกเหนือจากบันทึกlogcat ของอุปกรณ์)

อุปกรณ์ของบริการ Google

ในอุปกรณ์ GMS จะมีข้อจำกัดบางอย่างกับไฟล์นี้ ซึ่งรองรับโดย การทดสอบ GTS

อุปกรณ์ AOSP

ในอุปกรณ์ AOSP ไฟล์การกำหนดค่าต้องมีรูปแบบที่ถูกต้องและผ่านการทดสอบ CTS สำหรับศูนย์ความปลอดภัย การทดสอบจะยืนยันว่าไฟล์อยู่ในรูปแบบที่ถูกต้อง อุปกรณ์ GMS จะต้องผ่านการทดสอบเหล่านี้ด้วย