يتيح قفل التطبيقات للمستخدمين تأمين التطبيقات الفردية باستخدام رقم تعريف شخصي فريد. ويحمي ذلك البيانات الحسّاسة من وصول الضيوف أو المستخدمين الثانويين إليها، خاصةً عندما لا يكون المستخدم الأساسي في المركبة.
تعمل ميزة "قفل التطبيقات" بشكل مستقل عن قفل الملف الشخصي. يتيح هذا التصميم للمستخدمين المرونة اللازمة لتأمين تطبيقات حساسة معيّنة بدون الحاجة إلى قفل ملف المستخدم بأكمله.
يتوفّر تطبيق "قفل التطبيقات" كتطبيق غير مجمَّع على الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث. يمكنك تطوير هذا التطبيق بشكل منفصل عن نظام التشغيل Android Automotive OS الأساسي (AAOS). ومع ذلك، يجب نشر تطبيق "قفل التطبيقات" كتطبيق مميّز موقّع من المنصة ومضمّن في صورة المنصة.
يتم إعلام المستخدمين بميزة "قفل التطبيق" عند تثبيت التطبيقات:
الشكل 1: يظهر إشعار "قفل التطبيقات" بعد تثبيت أحد التطبيقات.
تكون ميزة "قفل التطبيقات" غير مفعَّلة تلقائيًا. بعد تفعيل الميزة، يُطلب من المستخدم ضبط رقم تعريف شخصي. يجب إدخال رقم التعريف الشخصي هذا بعد ذلك للوصول إلى أي تطبيق محمي بواسطة ميزة App Lock:
الشكل 2: إعدادات "قفل التطبيقات"
عند محاولة فتح تطبيق مقفل، سيُطلب من المستخدم إدخال رمز التعريف الشخصي الخاص بميزة "قفل التطبيقات":
الشكل 3: طلب تأكيد ميزة "قفل التطبيقات" عند محاولة فتح تطبيق مقفل
ضبط إعدادات "قفل التطبيقات"
لتطبيق إعدادات التطبيق، عدِّل res/values/config.xml على النحو التالي:
<resources>
<!--A customizable list of system packages that appear in the App Lock settings. -->
<string-array name="system_lockable_packages">
<item>com.android.car.calendar</item>
</string-array>
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">true</bool>
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
</resources>
تخصيص التطبيقات القابلة للقفل
لا يمكن قفل تطبيقات النظام تلقائيًا. يمكنك تحديد تطبيقات النظام التي يمكن قفلها باستخدام إعدادات system_lockable_packages.
لا يمكن قفل التطبيقات الأساسية، مثل "الإعدادات" وتطبيقات التنقّل ومساعدات الصوت، لأنّ ذلك قد يؤدي إلى سلوك غير متوقّع للنظام.
لتفعيل ميزة "قفل التطبيقات" لأحد تطبيقات النظام، استخدِم قائمة system_lockable_packages:
<!-- List of system packages that appear in the App Lock settings. -->
<string-array name="system_lockable_packages">
<item>com.android.car.calendar</item>
</string-array>
ضبط تعليق الوسائط
بشكلٍ تلقائي، يمكن قفل تطبيقات الوسائط إذا كانت المنصة متوافقة مع Car Media App من الإصدار 17 أو الإصدارات الأحدث من Car-apps-release. إذا كنت لا تتوافق مع الإصدار 17 من Car-apps-release أو إصدار أحدث، يمكنك إيقاف قفل تطبيق الوسائط باتّباع الخطوات التالية:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
إعداد مسار استرداد الحساب
قد ينسى المستخدمون رقم التعريف الشخصي الخاص بميزة "قفل التطبيقات". استخدِم config_recoveryAccountType لتخصيص نوع الحساب المستخدَم لاسترداد رقم التعريف الشخصي.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
تعيد ميزة "قفل التطبيقات" ضبط رقم التعريف الشخصي وتمحو بيانات التطبيقات الخاصة عندما يثبت المستخدم هويته باستخدام حساب من النوع الذي يتطابق مع config_recoveryAccountType.
تحديد نمط رمز الإحالة
لتخصيص الرمز المرجعي، استخدِم تراكبات موارد وقت التشغيل (RRO) لتراكب
SensitiveAppLockOverlayableResources.
بما أنّ ميزة "قفل التطبيقات" تستخدم مكتبة Car UI Library، يمكن أيضًا تطبيق حِزم RRO الحالية الخاصة بمكتبة Car UI Library على ميزة "قفل التطبيقات".
تستخدم مفاتيح لوحة أرقام التعريف الشخصي النمط نفسه المحدّد في styles.xml:
<style name="PinPadKey" parent="Widget.CarUi.Button">
<item name="android:textSize">@dimen/pin_pad_key_text_size</item>
<item name="android:layout_height">@dimen/pin_pad_key_diameter</item>
<item name="android:layout_width">@dimen/pin_pad_key_diameter</item>
…
</style>
يمكنك أيضًا تحديد أبعاد لوحة إدخال رقم التعريف الشخصي:
<resources>
<!-- Default dimensions for PIN pad view -->
<dimen name="pin_pad_title_text_size">44sp</dimen>
<dimen name="pin_pad_subtitle_text_size">32sp</dimen>
<dimen name="pin_pad_key_diameter">96dp</dimen>
<dimen name="pin_pad_key_text_size">32sp</dimen>
<dimen name="pin_pad_key_padding">0dp</dimen>
<dimen name="pin_pad_row_spacing">10dp</dimen>
<dimen name="pin_pad_col_spacing">12dp</dimen>
</resources>
إتاحة تعليق التشغيل إلى ذاكرة الوصول العشوائي
لإتاحة تعليق التشغيل إلى ذاكرة الوصول العشوائي (RAM)، عليك إضافة خدمة "قفل التطبيق" إلى
config_earlyStartupServices:
<string-array translatable="false" name="config_earlyStartupServices">
<!-- App Lock Persistent Background Service -->
<item>com.android.car.sensitiveapplock/.service.PersistentBackgroundService#bind=bind,user=foreground,trigger=userUnlocked</item>
</string-array>
إعدادات التصميم
يتطلّب ميزة "قفل التطبيقات" أذونات ذات امتيازات على مستوى النظام. يجب أن تعرّف المنصات التي تتوافق مع ميزة "قفل التطبيق" ميزة النظام com.android.car.sensitive_app_lock.
أضِف بيان الميزة والأذونات إلى com.android.car.sensitiveapplock.xml:
<permissions>
<feature name="com.android.car.sensitive_app_lock"/>
<privapp-permissions package="com.android.car.sensitiveapplock">
<permission name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
<permission name="android.permission.QUERY_USERS" />
<permission name="android.permission.MEDIA_CONTENT_CONTROL" />
<permission name="android.car.permission.CAR_POWER" />
<permission name="android.permission.POST_NOTIFICATIONS" />
</privapp-permissions>
</permissions>
يجب استيراد "قفل التطبيق" كتطبيق نظام موقَّع في الملف Android.bp:
android_app_import {
name: "AppLock",
apk: "AppLock.apk",
certificate: "platform",
privileged: true,
required: [
"privapp-com.android.car.sensitiveapplock",
],
optional_uses_libs: [
"androidx.window.extensions",
"androidx.window.sidecar",
"com.android.oem.tokens", /* For Android 16+ */
],
}
prebuilt_etc {
name: "privapp-com.android.car.sensitiveapplock",
sub_dir: "permissions",
src: "com.android.car.sensitiveapplock.xml",
filename_from_src: true,
}
بما أنّ وضع مستخدم النظام بدون واجهة مستخدم (HSUM) وحسابات الضيوف لا تتوافق مع ميزة "قفل التطبيقات"، يجب تفعيل هذه الميزة فقط في الملفات الثانوية. استخدِم هذا الإعداد لإتاحة التطبيق للمستخدمين الثانويين.
على سبيل المثال، في preinstalled-packages.xml:
<config>
…
<!-- Config for the Sensitive App Lock app -->
<install-in-user-type package="com.android.car.sensitiveapplock">
<!-- Sensitive App Lock is only available to secondary users. Do not install app in Guest users. -->
<install-in user-type="android.os.usertype.full.SECONDARY" />
</install-in-user-type>
</config>