يتيح قفل التطبيقات للمستخدمين تأمين التطبيقات الفردية باستخدام رقم تعريف شخصي فريد. ويحمي ذلك البيانات الحسّاسة من وصول الضيوف أو المستخدمين الثانويين إليها، خاصةً عندما لا يكون المستخدم الأساسي في السيارة.
يعمل قفل التطبيقات بشكل مستقل عن قفل الملف الشخصي. يتيح هذا التصميم للمستخدمين المرونة اللازمة لتأمين تطبيقات حساسة معيّنة بدون الحاجة إلى قفل ملف المستخدم بأكمله.
يتوفّر تطبيق "قفل التطبيقات" كتطبيق غير مجمَّع على الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث. يمكنك تطوير هذا التطبيق بشكل منفصل عن منصة Android Automotive OS الأساسية. ومع ذلك، يجب نشر تطبيق "قفل التطبيق" كتطبيق مميّز موقّع من المنصة ومضمّن في صورة المنصة.
يتم إعلام المستخدمين بميزة "قفل التطبيق" عند تثبيت التطبيقات:
الشكل 1: يظهر إشعار "قفل التطبيق" بعد تثبيت تطبيق.
تكون ميزة "قفل التطبيقات" غير مفعَّلة تلقائيًا. بعد تفعيل الميزة، يُطلب من المستخدم ضبط رقم تعريف شخصي. يجب إدخال رقم التعريف الشخصي هذا للوصول إلى أي تطبيق محمي بواسطة ميزة "قفل التطبيقات":
الشكل 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)
لإتاحة تعليق التشغيل إلى ذاكرة الوصول العشوائي (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>