تفعيل "مركز الأمان" أو إيقافه
لتفعيل "مركز الأمان" أو إيقافه، استخدِم السمة القابلة للتراكب
الحقل المنطقي 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
لإيقافه.
عند إيقاف "مركز الأمان"، أي محاولة لإعادة التوجيه إلى وتفتح صفحة الخصوصية تطبيق "الإعدادات" بدلاً من ذلك. ينبغي أن تكون أي محاولة للتفاعل مع ويتم تجاهل واجهات برمجة التطبيقات بدون تنبيه أو يتم عرض قيمة تلقائية. واجهة برمجة التطبيقات السريعة المرتبطة يتم أيضًا عرض أو إخفاء مربّع الإعدادات وإدخال الإعدادات بناءً على ما إذا كان تم تفعيل "مركز الأمان".
علامة DeviceConfig
بالإضافة إلى تفعيل ميزة "مركز الأمان" باستخدام config_enableSafetyCenter
تهيئة،
DeviceConfig
تُستخدم العلامة (safety_center_is_enabled
) لتفعيل ميزة "الأمن الشخصي" أو إيقافها عن بُعد
الوسط.
في نظام التشغيل Android 14 والإصدارات الأحدث، ليس عليك اتّخاذ أي إجراء آخر.
لأنّ هذه العلامة هي true
تلقائيًا.
في نظام Android 13، يكون "مركز الأمان" غير مفعَّل تلقائيًا
جهة الخادم وتفعيلها من خلال القائمة المسموح بها باستخدام هذه العلامة إرسال بيانات جهازك
بصمات الأصابع والتواصل مع مدير الحسابات التقنية لإضافتك إلى القائمة المسموح بها لاحظ أن
يجب إضافة الإصدار 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_config.xml
، يمكنك الاطّلاع على تغيير قيمة
موارد التطبيق في وقت التشغيل
للحصول على معلومات حول تعديل تراكبات موارد وقت التشغيل (RROs).
في Android 14، احرص على تركيب
res/raw-v34/safety_center_config.xml
وليس ملف
وتكون الأولوية لـ res/raw/safety_center_config.xml
باعتبارها للأولى (هذا أيضًا
ينطبق على الملفات الأخرى التي تم تحديد نطاقها لـ v34
، مثلاً
res/values-v34/strings.xml
). يجب أن تحتوي حزمة التراكب على حزمة تطوير برامج (SDK) أقل
من 34
، وإلا فقد تتم إزالة مؤهِّل v34
أثناء التحسين.
احرص أيضًا على استخدام تراكب ثابت، حيث يتم تحميل هذه القيمة حول نظام التشغيل
الوقت.
استهداف الحزمة بالنسبة إلى أجهزة "المشروع المفتوح المصدر لنظام Android" (AOSP)
com.android.safetycenter.resources
ليس هناك أي تهيئة متراكبة
الهدف. يمكن تراكب جميع الموارد بدون أي قيود على المحتوى.
بالنسبة إلى أجهزة GMS التي تم ضبطها لتلقّي تحديثات Mainline، يمكنك استهداف
الحزمة رقم com.google.android.safetycenter.resources
استهداف الإعدادات
SafetyCenterConfig
تتطلب هذه التهيئة أن تكون حزمة التراكب في
إما بالقسم product
أو system
أو vendor
. على المصنّعين الأصليين للأجهزة في "خدمات Google للأجهزة الجوّالة" (GMS) نسخ
قدّمت Google safety_center_config.xml
الملف والحدّ الأقصى
تعديلات على القيود المسموح بها من قِبل 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
على المصنّعين الأصليين للأجهزة في "خدمات Google للأجهزة الجوّالة" نسخ ملف safety_center_config.xml
المقدَّم من Google
الحد من التعديلات على تلك المسموح بها من خلال اختبارات GTS. على المصنّعين الأصليين للأجهزة في "خدمات Google للأجهزة الجوّالة" (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>
ملف إعداد 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>
تخصيص مصادر "مركز الأمان"
أنواع مصادر مركز الأمان
يمكن أن تكون المصادر ديناميكية أو مشكلة فقط أو ثابتة بناءً على نوع البيانات التي إرساله إلى "مركز الأمان"
المصادر الديناميكية
وضع علامة "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
- طريقة عرض إدخال واجهة المستخدم في حال عدم توفير بيانات السلامة المصدر
- يجب أن يكون نوع التعداد الذي يتم تمثيله كسلسلة واحدًا مما يلي:
enabled
(تلقائي، يتم عرضه بشكل طبيعي)disabled
(يتم عرض المحتوى باللون الرمادي، ولا يمكن النقر عليه)hidden
(لا يتم عرضه)
- اختياري لمصادر الأمان الديناميكية (الإعداد التلقائي هو
enabled
) - لا يُسمَح باستخدامه في مصادر الأمان الثابتة والمتخصّصة فقط.
profile
- ما إذا كان مصدر الأمان هذا يتفاعل مع الملف الشخصي المُدار للمستخدم
- يجب أن يكون نوع التعداد الذي يتم تمثيله كسلسلة واحدًا مما يلي:
primary_profile_only
(يتفاعل فقط مع الملف الشخصي الرئيسي فقط)all_profiles
(يمكنه أيضًا التفاعل مع الملفات التجارية المُدارة)
- في
all_profiles
، يتم إنشاء عدة إدخالات لواجهة المستخدم (إدخال واحد للملف الشخصي). رئيسي وواحد لكل ملف شخصي مُدار) يمكن أن يوفرها مصدر الأمان بيانات مختلفة لكل ملف شخصي - مطلوبة لجميع مصادر الأمان
searchTerms
- قائمة بعبارات البحث المرتبطة بإدخال "مركز الأمان" عند استخدام الْبَحْثْ فِي تَطْبِيقْ الْإِعْدَادَاتْ
- ويتم تمثيل رقم تعريف المورد كاسم مورد مؤهل بالكامل، على سبيل المثال،
@package:string/my_search_terms
- اختيارية لمصادر الأمان الديناميكية والثابتة (الإعداد التلقائي هو "بلا بحث" البنود)
- لا يُسمَح باستخدامه لمصادر الأمان المعنيّة بالمشاكل فقط
title
- العنوان التلقائي لإدخال واجهة المستخدم، يتم استخدامه عندما لا يتم تقديم بيانات بشكل ديناميكي حسب المصدر
- ويتم تمثيل رقم تعريف المورد كاسم مورد مؤهل بالكامل، على سبيل المثال،
@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
- الملخص التلقائي لإدخال واجهة المستخدم (هذا وصف نصي أطول المعروض أسفل العنوان)، ويتم استخدامه عندما لا تتوفر البيانات بشكل ديناميكي من قبل المصدر
- ويتم تمثيل رقم تعريف المورد كاسم مورد مؤهل بالكامل، على سبيل المثال،
@package:string/my_summary
- اختيارية لمصادر الأمان الثابتة (الإعداد التلقائي ليس ملخّصًا)
- هذه السمة مطلوبة لمصادر الأمان الديناميكية (ما لم تكن
initialDisplayState
مفعّلة.hidden
) - لا يُسمَح باستخدامه لمصادر الأمان المعنيّة بالمشاكل فقط
intentAction
- إجراء يتم تشغيله عند النقر على إدخال واجهة المستخدم
- نوع السلسلة، على سبيل المثال،
com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS
، أو معرِّف المورد ممثلًا كاسم مورد مؤهل بالكامل، على سبيل المثال،@package:string/my_intent_action
- إذا لم يتم حلّ الإجراء الخاص بالهدف على
packageName
المحدَّد (إذا أي)، يعمل إدخال واجهة المستخدم بالطريقة نفسها التي يتصرف بهاinitialDisplayState="disabled"
- مطلوبة لمصادر الأمان الثابتة و
dynamic
مصدر أمان لديهمinitialDisplayState="enabled"
- لا يُسمَح باستخدامه لمصادر الأمان المعنيّة بالمشاكل فقط
maxSeverityLevel
- أقصى مستوى خطورة يمكن أن يوفره مصدر "مركز الأمان" هذا
- يتم تمثيل عدد صحيح كسلسلة، مثلاً
300
. - اختياري لمصادر الأمان الديناميكية والمتعلقة بالمشاكل فقط (الإعداد التلقائي هو "لا" الحد الأقصى)
- محتوى يُحظر استخدامه في مصادر الأمان الثابتة
loggingAllowed
- ما إذا كان بإمكان "مركز الأمان" تسجيل التفاعلات أو البيانات المتعلّقة بهذا الموضوع المصدر
- يتم تمثيل قيمة منطقية كسلسلة، مثلاً
false
. - اختياري لمصادر الأمان الديناميكية والمخصصة لمعالجة المشاكل فقط (القيمة التلقائية هي
true
) - محتوى يُحظر استخدامه في مصادر الأمان الثابتة
refreshOnPageOpenAllowed
- تحديد ما إذا كان يجب إرسال إشارة إلى مصدر الأمان لإعادة تحميل بياناته عندما تكون شاشة "مركز الأمان" مفتوحة
- يتم تمثيل قيمة منطقية كسلسلة، مثلاً،
true
. - اختياري لمصادر الأمان الديناميكية والمخصصة لمعالجة المشاكل فقط (القيمة التلقائية هي
false
) - محتوى يُحظر استخدامه في مصادر الأمان الثابتة
notificationsAllowed
(بدءًا من Android 14)- ما إذا كان بإمكان مصدر الأمان تقديم إشعار اختياريًا عندما الإبلاغ عن مشكلة
- يتم تمثيل قيمة منطقية كسلسلة، مثلاً،
true
. - اختياري لمصادر الأمان الديناميكية والمخصصة لمعالجة المشاكل فقط (القيمة التلقائية هي
false
) - محتوى يُحظر استخدامه في مصادر الأمان الثابتة
deduplicationGroup
(بدءًا من Android 14)- يشير هذا المصطلح إلى معرّف فريد محتمَل يمكن استخدامه لإزالة تكرار المشاكل. من مصادر مختلفة. المصادر ضمن عملية إزالة التكرار نفسها مجموعة يمكنها إرسال المشكلات باستخدام معرف إزالة تكرار اختياري. ومن المشاكل المتعلقة بـ سيظهر معرّف إزالة التكرار نفسه مرة واحدة فقط في واجهة المستخدم، حتى إذا ترسلها مصادر متعددة.
- نوع السلسلة
- اختياري لمصادر الأمان الديناميكية والمتعلقة بالمشاكل فقط (الإعداد التلقائي هو "لا" إزالة التكرار)
- محتوى يُحظر استخدامه في مصادر الأمان الثابتة
packageCertificateHashes
(بدءًا من Android 14)- قائمة مفصولة بفواصل لتجزئات الشهادة للحقل
packageName
فإذا تم تعيين ذلك، فإن الشهادة التحقّق سيتم تنفيذه في ضوءpackageCertificateHashes
المحدد التي حصلت عليهاpackageName
عند التفاعل مع مصدر الأمان، لأغراض أمنية. - نوع السلسلة
- اختياري لمصادر الأمان الديناميكية والمتعلقة بالمشاكل فقط (الإعداد التلقائي هو "لا" عمليات فحص الشهادات)
- محتوى يُحظر استخدامه في مصادر الأمان الثابتة
- قائمة مفصولة بفواصل لتجزئات الشهادة للحقل
تخصيص مجموعات المصادر في "مركز الأمان"
يجب تضمين مصادر "مركز الأمان" في مجموعة مصادر "مركز الأمان". يتمّ عرض كلّ مجموعة مصادر في واجهة المستخدِم بالترتيب الذي تظهر به مجموعات المصادر. مدرجة في الملف. يتم عرض كل مصدر داخل المجموعة بالترتيب. ويتم إدراج المصادر في الملف. إذا كانت المجموعة تضم مصدر أمان واحدًا، يتم عرضه كإدخال واحد بدلاً من مجموعة.
ضبط مجموعة مصادر مركز الأمان
استخدِم المتغيّرات التالية لتخصيص مجموعات المصادر في "مركز الأمان":
id
- المعرّف الفريد لمجموعة مصادر الأمان فريدة من نوعها في الملف بأكمله
- نوع السلسلة
- مطلوب
title
- عنوان المجموعة في واجهة المستخدم
- ويتم تمثيل رقم تعريف المورد كاسم مورد مؤهل بالكامل، على سبيل المثال،
@package:string/my_title
- مطلوبة في حال كان هناك مصدر أمان ديناميكي أو ثابت واحد على الأقل في
المجموعة (أي أنّ المجموعة ليست تابعة لـ
type="hidden"
)
summary
- وصف موجز للمجموعة في واجهة المستخدم، يظهر أسفل العنوان. يتم عرضها في ظل شروط معيّنة، عادةً عند عدم توفير بيانات. وإلا، فسيتم حساب الملخص بناءً على البيانات المقدمة من المصادر داخل المجموعة.
- ويتم تمثيل رقم تعريف المورد كاسم مورد مؤهل بالكامل، على سبيل المثال،
@package:string/my_summary
- اختياري (الإعداد التلقائي ليس ملخّصًا)
statelessIconType
- نوع الرمز الذي يتم عرضه للمجموعة عندما لا يوفر العنصر أي حالة مصادر الأمان، مثل الإدخالات الثابتة
- يتم تمثيل نوع التعداد كسلسلة ويجب أن تكون إما
none
أوprivacy
(نوع رمز الخصوصية) - اختياري (القيمة التلقائية هي
none
)
type
(بدءًا من Android 14)- نوع صريح لتحديد كيفية تفاعل هذه المجموعة مع "مركز الأمان"
- يجب أن يكون نوع التعداد الذي يتم تمثيله كسلسلة واحدًا مما يلي:
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>
في Android 13، ستظهر هذه المجموعة كمجموعة قابلة للتصغير. إدخال في واجهة المستخدم. وفي 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>
وستظهر هذه المجموعة كقائمة ثابتة من الإدخالات في واجهة المستخدم.
مجموعة مخفية
تحتوي المجموعة المخفية على مصادر أمان مخصّصة لمشكلة فقط وليس لها عنوان. لا تظهر المجموعات المخفية في واجهة المستخدم:
<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 التي لم يتم ضبطها لتلقّي تحديثات Mainline، بدلاً من على تراكب ملف التهيئة بالكامل، يمكنك تركيب ستة موارد من سلاسل تلبية جميع احتياجات التخصيص. يتم سرد موارد السلسلة التي تظهر على سطح الفيديو. في الجدول.
مورد السلاسل | الوصف |
---|---|
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 |
تراكب هذه القيمة لعرض إدخال واجهة مستخدم لمصدر المقاييس الحيوية الذي تملكه
بواسطة الحزمة com.android.settings عند عدم وجود بيانات ديناميكية
التي يقدّمها المصدر القيمة الافتراضية هي
hidden |
google_security_updates_intent |
يمكنك إضافة هذه القيمة لتغيير الهدف المطلوب لفتح النشاط.
تسمح للمستخدم بالتحقّق من تحديثات الأمان وتثبيتها. هذا النمط
يجب أن يكون الإجراء المطلوب مرتبطًا بنشاط تم تصديره. تشير رسالة الأشكال البيانية
القيمة التلقائية هي
android.settings.SYSTEM_UPDATE_SETTINGS |
ما مِن سلاسل أخرى في حزمة com.google.android.safetycenter.resources
قابلة للتراكب.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل AOSP، سيتم توفير كل الموارد في com.android.safetycenter.resources
.
قابلة للتراكب بدون أي قيود على المحتوى.
بالنسبة إلى أجهزة GMS التي لم يتم ضبطها لتلقّي تحديثات Mainline، يمكنك إنشاء
استبدال حزمة واحدة (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 اجتياز هذه الاختبارات.