مرکز ایمنی را فعال یا غیرفعال کنید
برای فعال یا غیرفعال کردن Safety Center، از قسمت بولی config_enableSafetyCenter
قابل پوشش در فایل frameworks/base/core/res/res/values/config.xml
استفاده کنید.
در اکثر دستگاهها، Safety Center به طور پیشفرض پشتیبانی میشود، به عنوان مثال، در تلفنها و تبلتها. در برخی از عوامل شکل، Safety Center به طور پیشفرض غیرفعال است، به عنوان مثال، در 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>
برای پشتیبانی از Safety Center، config_enableSafetyCenter
را روی true
تنظیم کنید. اگر نمیخواهید از Safety Center پشتیبانی کنید، این مقدار را روی false
تنظیم کنید تا غیرفعال شود.
وقتی مرکز ایمنی غیرفعال است، هر تلاشی برای تغییر مسیر به صفحه امنیت و حریم خصوصی، برنامه تنظیمات را باز میکند. هر تلاشی برای تعامل با APIها بیصدا نادیده گرفته میشود یا یک مقدار پیشفرض را برمیگرداند. کاشی تنظیمات سریع مرتبط و ورودی تنظیمات نیز بسته به فعال بودن مرکز ایمنی در معرض یا پنهان هستند.
پرچم DeviceConfig
علاوه بر فعال کردن Safety Center با استفاده از پیکربندی config_enableSafetyCenter
، از یک پرچم DeviceConfig
( safety_center_is_enabled
) برای فعال یا غیرفعال کردن Safety Center از راه دور استفاده میشود.
در اندروید 14 و بالاتر، هیچ اقدام دیگری لازم نیست زیرا این پرچم به طور پیش فرض true
است.
در Android 13، Safety Center بهطور پیشفرض سمت سرور غیرفعال است و توسط لیست مجاز با استفاده از این پرچم فعال میشود. اثر انگشت دستگاه خود را ارسال کنید و با TAM خود تماس بگیرید تا به لیست مجاز اضافه شود. توجه داشته باشید که نسخه اصلی M-2022-11
یا بالاتر باید به لیست مجاز اضافه شود. برای توسعه و آزمایش محلی، پرچم را می توان به صورت محلی (تا راه اندازی مجدد) با دستور adb
فعال یا غیرفعال کرد. به عنوان مثال، برای فعال کردن پرچم:
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 استفاده کنید. با فرض اینکه شرایط سفارشیسازی را برآورده کردهاید، میتوانید این فایل را همپوشانی کنید.
روی فایل پیکربندی قرار دهید
برای همپوشانی فایل safety_center_config.xml
، به تغییر مقدار منابع یک برنامه در زمان اجرا برای اطلاعاتی در مورد اصلاح همپوشانی منابع زمان اجرا (RRO) مراجعه کنید.
در Android 14، مطمئن شوید که فایل res/raw-v34/safety_center_config.xml
و نه res/raw/safety_center_config.xml
را همپوشانی کنید زیرا اولی اولویت دارد (این مورد در مورد سایر فایلهایی که برای v34
برای مثال res/values-v34/strings.xml
در نظر گرفته شده نیز صدق میکند. res/values-v34/strings.xml
). بسته همپوشانی باید حداقل SDK کمتر از 34
داشته باشد، در غیر این صورت ممکن است واجد شرایط v34
در طول بهینهسازی حذف شود. همچنین مطمئن شوید که از یک پوشش ثابت استفاده کنید، زیرا این مقدار در زمان بوت بارگذاری می شود.
برای دستگاههای پروژه منبع باز Android (AOSP)، بسته com.android.safetycenter.resources
را هدف قرار دهید. هیچ پیکربندی همپوشانی برای هدفگیری وجود ندارد. همه منابع بدون محدودیت در محتوا قابل همپوشانی هستند.
برای دستگاههای GMS که برای دریافت بهروزرسانیهای خط اصلی پیکربندی شدهاند، بسته com.google.android.safetycenter.resources
را هدف قرار دهید. پیکربندی SafetyCenterConfig
را هدف قرار دهید. این پیکربندی مستلزم آن است که بسته پوششی در پارتیشن product
، system
یا vendor
باشد. OEM های GMS باید فایل 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 که برای دریافت بهروزرسانیهای خط اصلی پیکربندی نشدهاند، بسته com.android.safetycenter.resources
را هدف قرار دهید. هیچ پیکربندی همپوشانی برای هدفگیری وجود ندارد. بسته همپوشانی باید از نام بسته com.google.android.safetycenter.resources
استفاده کند.
OEM های GMS باید فایل safety_center_config.xml
ارائه شده توسط Google را کپی کنند و تغییرات را به مواردی که توسط آزمایش های GTS مجاز است محدود کنند. OEM های GMS باید رشته های مورد استفاده در پیکربندی 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>
فایل پیکربندی گوگل
فایل پیکربندی AOSP در packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml
قرار دارد.
در اندروید 13، فایل پیکربندی گوگل به صورت زیر است:
<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>
در اندروید 14، فایل پیکربندی گوگل به صورت زیر است:
<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>
منابع مرکز ایمنی را سفارشی کنید
انواع منبع مرکز ایمنی
منابع بر اساس نوع داده ای که در اختیار مرکز ایمنی قرار می دهند، می توانند پویا، فقط مشکل دار یا ثابت باشند.
منابع پویا
منبع ایمنی را به عنوان 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
- شناسه منحصر به فرد برای منبع ایمنی، باید در کل فایل منحصر به فرد باشد و باید فقط از حروف الفبای (az، AZ) تشکیل شده باشد و به حروف بزرگ و کوچک حساس است.
- نوع رشته
- برای همه انواع منبع ایمنی مورد نیاز است
-
packageName
- نام بسته ای که این منبع ایمنی را در اختیار دارد، به عنوان مثال،
com.google.android.permissioncontroller
- نوع رشته
- برای منابع ایمنی پویا و فقط با مشکل مورد نیاز است
- برای منابع ایمنی ساکن در اندروید 13 ممنوع است. در اندروید 14 میتوان بهطور اختیاری تنظیم کرد تا
intentAction
منبع را به طور صریح و نه ضمنی هدف قرار دهد (برای جزئیات بیشتر به مستندات وضوح intent رجوع کنید)
- نام بسته ای که این منبع ایمنی را در اختیار دارد، به عنوان مثال،
-
initialDisplayState
- وقتی هیچ داده ای توسط منبع ایمنی ارائه نمی شود، ورودی UI چگونه نمایش داده می شود
- نوع Enum که به عنوان یک رشته نمایش داده می شود، باید یکی از موارد زیر باشد:
-
enabled
(پیشفرض، به طور معمول نمایش داده میشود) -
disabled
(نمایش خاکستری است، نمی توان روی آن کلیک کرد) -
hidden
(نمایش نمی دهد)
-
- اختیاری برای منابع ایمنی پویا (پیشفرض
enabled
است) - برای منابع ایمنی فقط با مشکل و استاتیک ممنوع است
-
profile
- اینکه آیا این منبع ایمنی با نمایه مدیریت شده کاربر تعامل دارد یا خیر
- نوع Enum که به عنوان یک رشته نمایش داده می شود، باید یکی از موارد زیر باشد:
-
primary_profile_only
(فقط با والد نمایه تعامل دارد) -
all_profiles
(همچنین می تواند با نمایه(های) مدیریت شده تعامل داشته باشد)
-
- در
all_profiles
، چندین ورودی UI ایجاد می شود (یکی برای والد نمایه، و یکی برای هر نمایه مدیریت شده). منبع ایمنی می تواند داده های متفاوتی را برای هر نمایه ارائه دهد - برای تمام منابع ایمنی مورد نیاز است
-
searchTerms
- فهرست عبارات جستجویی که هنگام استفاده از جستجو در برنامه تنظیمات به ورودی مرکز ایمنی نگاشت میشوند
- شناسه منبع به عنوان یک نام منبع کاملاً واجد شرایط نشان داده می شود، به عنوان مثال،
@package:string/my_search_terms
- اختیاری برای منابع ایمنی پویا و ایستا (پیشفرض عبارت جستجو نیست)
- برای منابع ایمنی فقط با مشکل ممنوع است
-
title
- عنوان پیشفرض ورودی UI، زمانی استفاده میشود که هیچ دادهای به صورت پویا توسط منبع ارائه نشده باشد
- شناسه منبع به عنوان یک نام منبع کاملاً واجد شرایط نشان داده می شود، به عنوان مثال،
@package:string/my_title
- برای منابع ایمنی پویا و ایستا مورد نیاز است (مگر اینکه
initialDisplayState="hidden"
بدونsearchTerms
) - برای منابع ایمنی فقط با مشکل ممنوع است
-
titleForWork
- عنوان پیشفرض ورودی رابط کاربری برای نمایه مدیریتشده که وقتی دادهها به صورت پویا توسط منبع ارائه نمیشوند استفاده میشود.
- شناسه منبع به عنوان یک نام منبع کاملاً واجد شرایط نشان داده میشود، برای مثال
@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
- اگر این اقدام قصد برای
packageName
داده شده حل نشود (در صورت وجود)، ورودی UI به همان شیوه ای عمل می کند که دارایinitialDisplayState="disabled"
- برای منابع ایمنی ایستا و منابع ایمنی
dynamic
که دارایinitialDisplayState="enabled"
هستند لازم است - برای منابع ایمنی فقط موضوع ممنوع است
-
maxSeverityLevel
- حداکثر سطح شدتی که این منبع مرکز ایمنی می تواند ارائه دهد
- عدد صحیح به عنوان یک رشته نمایش داده می شود، به عنوان مثال،
300
- اختیاری برای منابع ایمنی پویا و فقط با مشکل (پیشفرض حداکثر نیست)
- برای منابع ایمنی ساکن ممنوع است
-
loggingAllowed
- آیا مرکز ایمنی میتواند تعاملات یا دادههای مربوط به این منبع را ثبت کند
- Boolean به عنوان یک رشته نمایش داده می شود، برای مثال
false
- اختیاری برای منابع ایمنی پویا و فقط مشکل دار (پیش فرض
true
است) - برای منابع ایمنی ساکن ممنوع است
-
refreshOnPageOpenAllowed
- آیا باید سیگنالی به منبع ایمنی ارسال شود تا دادههای آن هنگام باز شدن صفحه مرکز ایمنی باز شود.
- به عنوان
true
، Boolean به عنوان یک رشته نشان داده می شود - اختیاری برای منابع ایمنی پویا و فقط با مشکل (پیشفرض
false
است) - برای منابع ایمنی ساکن ممنوع است
-
notificationsAllowed
(شروع اندروید 14)- آیا منبع ایمنی می تواند به صورت اختیاری هنگام گزارش یک مشکل اعلان ارائه دهد یا خیر
- به عنوان
true
، Boolean به عنوان یک رشته نشان داده می شود - اختیاری برای منابع ایمنی پویا و فقط با مشکل (پیشفرض
false
است) - برای منابع ایمنی ساکن ممنوع است
-
deduplicationGroup
(شروع اندروید 14)- یک شناسه منحصر به فرد بالقوه که می تواند برای کپی کردن مسائلی که از منابع مختلف می آیند استفاده شود. منابع موجود در همان گروه کپی برداری می توانند مشکلات را با شناسه حذف تکراری اختیاری ارسال کنند. مشکلات مربوط به همان شناسه حذف تکراری فقط یک بار در UI نشان داده می شوند، حتی اگر چندین منبع آنها را ارسال کنند.
- نوع رشته
- اختیاری برای منابع ایمنی پویا و فقط با مشکل (پیشفرض بدون تکرار نیست)
- برای منابع ایمنی ساکن ممنوع است
-
packageCertificateHashes
(شروع اندروید 14)- فهرستی از هش های گواهی برای
packageName
داده شده با کاما جدا شده است. اگر این تنظیم شود، هنگام تعامل با منبع ایمنی، برای اهداف امنیتی، یک بررسی گواهی در برابرpackageCertificateHashes
داده شده برایpackageName
داده شده انجام می شود. - نوع رشته
- اختیاری برای منابع ایمنی پویا و فقط با مشکل (پیشفرض بدون بررسی گواهی است)
- برای منابع ایمنی ساکن ممنوع است
- فهرستی از هش های گواهی برای
گروه های منابع مرکز ایمنی را سفارشی کنید
منابع مرکز ایمنی باید در یک گروه منابع مرکز ایمنی باشد. هر گروه منبع در UI به ترتیبی که گروه های منبع در فایل فهرست شده اند نمایش داده می شود. هر منبع در داخل گروه به ترتیب فهرست شده منابع در فایل نمایش داده می شود. اگر گروه حاوی یک منبع ایمنی واحد باشد، به جای یک گروه به عنوان یک ورودی نمایش داده می شود.
پیکربندی گروه منابع مرکز ایمنی
از متغیرهای زیر برای سفارشی کردن گروه های منبع مرکز ایمنی استفاده کنید:
-
id
- شناسه منحصر به فرد برای گروه منابع ایمنی؛ باید در کل فایل منحصر به فرد باشد
- نوع رشته
- مورد نیاز
-
title
- عنوان گروه در UI
- شناسه منبع به عنوان یک نام منبع کاملاً واجد شرایط نشان داده می شود، به عنوان مثال،
@package:string/my_title
- اگر حداقل یک منبع ایمنی پویا یا ایستا در گروه وجود داشته باشد (یعنی گروه از
type="hidden"
نباشد، الزامی است.
-
summary
- شرح مختصری از گروه در رابط کاربری که در زیر عنوان نمایش داده شده است. تحت شرایط خاص نمایش داده می شود، معمولاً زمانی که داده ها ارائه نمی شوند. در غیر این صورت، خلاصه بر اساس داده های ارائه شده توسط منابع درون گروه محاسبه می شود.
- شناسه منبع به عنوان یک نام منبع کاملاً واجد شرایط نشان داده شده است، به عنوان مثال،
@package:string/my_summary
- اختیاری (پیشفرض خلاصه نیست)
-
statelessIconType
- نوع نماد برای گروه زمانی نمایش داده می شود که هیچ حالتی توسط منابع ایمنی ارائه نشده باشد، به عنوان مثال، ورودی های ایستا
- نوع Enum به عنوان یک رشته نمایش داده می شود که باید یا
none
یاprivacy
باشد (نوع نماد حریم خصوصی) - اختیاری (پیشفرض
none
نیست)
-
type
(شروع اندروید 14)- یک نوع صریح برای واجد شرایط بودن نحوه تعامل این گروه با مرکز ایمنی
- نوع Enum که به عنوان یک رشته نمایش داده می شود، باید یکی از موارد زیر باشد:
-
stateful
(نمایش و کمک به وضعیت کلی مرکز ایمنی) -
stateless
(نمایش میدهد و به وضعیت کلی مرکز ایمنی کمک نمیکند) -
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>
در اندروید 13، چنین گروهی به عنوان ورودی تاشو در رابط کاربری نمایش داده می شود. در اندروید 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 نشان داده می شود.
گروه پنهان
یک گروه پنهان فقط حاوی منابع ایمنی فقط مشکل است و عنوانی ندارد. گروه های پنهان در رابط کاربری ظاهر نمی شوند:
<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 Center را بهعنوان یک ورودی ثابت نمایش دهید، که اجازه میدهد تا ورودیهای تغییر مسیر را بسته به برخی شرایط فشار دهید و محتوای آن را در زمان اجرا سفارشی کنید. به عنوان مثال، بسته به ورودی اطلاعات خط مشی کاری خود، منبع پویا را در یک گروه بدون تابعیت تعریف کنید.
این مثال منبع ایمنی پویا را نشان میدهد که سیگنال ایمنی ارائه نمیکند، زیرا در یک گروه بدون حالت قرار دارد:
<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>
در این مثال، منبع می تواند فقط کارت های هشدار سبز را فشار دهد و وضعیت نامشخصی ارائه دهد. برای اینکه بتوان دادههای دیگری را ارائه کرد، منبع باید در یک گروه Stateful باشد.
رشته ها و فیلدهای همپوشانی را سفارشی کنید
برای دستگاههای GMS که برای دریافت بهروزرسانیهای Mainline پیکربندی نشدهاند، بهجای پوشاندن کل فایل پیکربندی، میتوانید شش منبع رشته را برای رفع تمام نیازهای سفارشیسازی پوشش دهید. منابع رشته ای که همپوشانی دارند در جدول فهرست شده اند.
منبع رشته | توضیحات |
---|---|
google_lock_screen_sources_summary | این مقدار را برای تعریف خلاصه ایستا قرار دهید که برای گروه AndroidLockScreenSources زمانی که همه منابع گروه در وضعیت خوبی هستند (اطلاعات یا سطح شدت نامشخص) نمایش داده می شود. به طور پیشفرض، Safety Center عنوان همه منابع گروه را به عنوان خلاصه گروه نمایش میدهد. |
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 | وقتی هیچ داده پویا توسط منبع ارائه نمی شود، این مقدار را پوشش دهید تا یک ورودی رابط کاربری برای منبع بیومتریک متعلق به بسته com.android.settings نشان داده شود. مقدار پیش فرض hidden است. |
google_security_updates_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 ) ارائه میکند.
دستگاه های خدمات گوگل
در دستگاه های GMS، محدودیت هایی بر روی این فایل اعمال می شود. این توسط تست های GTS پشتیبانی می شود.
دستگاه های AOSP
در دستگاه های AOSP، فایل پیکربندی باید به خوبی شکل گرفته باشد و تست های CTS برای Safety Center را پشت سر بگذارد. تست ها تأیید می کنند که پرونده به خوبی شکل گرفته است. دستگاه های GMS نیز باید این تست ها را پشت سر بگذارند.