Kunci Aplikasi memungkinkan pengguna mengamankan setiap aplikasi dengan kode PIN unik. Fitur ini melindungi data sensitif dari akses oleh tamu atau pengguna sekunder, terutama saat pengguna utama tidak berada di dalam kendaraan.
Kunci Aplikasi beroperasi secara independen dari kunci profil. Desain ini memberi pengguna fleksibilitas untuk mengamankan aplikasi sensitif tertentu tanpa perlu mengunci seluruh profil pengguna.
Kunci Aplikasi tersedia sebagai aplikasi yang tidak tergabung di Android 14 (level API 34) dan yang lebih tinggi. Anda dapat mengembangkan aplikasi ini secara terpisah dari platform Android Automotive OS (AAOS) inti. Namun, Anda harus men-deploy aplikasi Kunci Aplikasi sebagai aplikasi istimewa yang ditandatangani platform dan disertakan dengan image platform Anda.
Pengguna akan diberi tahu tentang fitur Kunci Aplikasi saat mereka menginstal aplikasi:
Gambar 1. Notifikasi Kunci Aplikasi ditampilkan setelah aplikasi diinstal.
Kunci Aplikasi dinonaktifkan secara default. Setelah mengaktifkan fitur ini, pengguna akan diminta untuk menyetel PIN. PIN ini selanjutnya diperlukan untuk mengakses aplikasi apa pun yang diamankan oleh Kunci Aplikasi:
Gambar 2. Setelan Kunci Aplikasi.
Saat mencoba membuka aplikasi yang terkunci, pengguna akan diminta untuk memasukkan kode PIN Kunci Aplikasi:
Gambar 3. Perintah Kunci Aplikasi saat mencoba membuka aplikasi yang terkunci.
Mengonfigurasi Kunci Aplikasi
Untuk menerapkan konfigurasi aplikasi, edit 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>
Menyesuaikan aplikasi yang dapat dikunci
Secara default, aplikasi sistem tidak dapat dikunci. Anda dapat menentukan aplikasi sistem yang dapat dikunci menggunakan konfigurasi system_lockable_packages.
Aplikasi inti seperti Setelan, aplikasi navigasi, dan asisten suara tidak dapat dikunci karena tindakan tersebut dapat menyebabkan perilaku sistem yang tidak dapat diprediksi.
Untuk mengaktifkan Kunci Aplikasi bagi aplikasi sistem, gunakan daftar 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>
Mengonfigurasi penangguhan media
Secara default, aplikasi media dapat dikunci jika platform mendukung Aplikasi Media Mobil dari Car-apps-release 17 atau yang lebih tinggi. Jika Anda tidak mendukung Car-apps-release 17 atau yang lebih tinggi, Anda dapat menonaktifkan penguncian aplikasi media:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Menyiapkan alur pemulihan
Pengguna mungkin lupa PIN Kunci Aplikasi mereka. Gunakan config_recoveryAccountType untuk menyesuaikan jenis akun yang digunakan untuk pemulihan PIN.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
Kunci Aplikasi mereset PIN dan menghapus data aplikasi pribadi saat pengguna melakukan autentikasi
dengan akun yang jenisnya cocok dengan config_recoveryAccountType.
Menentukan gaya kode referensi
Untuk menyesuaikan kode referensi, gunakan overlay resource runtime (RRO) untuk meng-overlay
SensitiveAppLockOverlayableResources.
Karena Kunci Aplikasi menggunakan Library UI Mobil, RRO Library UI Mobil yang ada juga dapat diterapkan ke Kunci Aplikasi.
Tombol keypad PIN menggunakan gaya yang sama seperti yang ditentukan dalam 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>
Anda juga dapat menentukan dimensi papan PIN:
<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>
Mendukung penangguhan ke RAM
Untuk mendukung penangguhan ke RAM, Anda harus menambahkan layanan Kunci Aplikasi ke
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>
Konfigurasi build
Kunci Aplikasi memerlukan izin hak istimewa sistem. Platform yang mendukung Kunci Aplikasi
juga harus mendeklarasikan fitur sistem com.android.car.sensitive_app_lock.
Tambahkan deklarasi fitur dan izin ke
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>
Kunci Aplikasi harus diimpor sebagai aplikasi sistem bertanda tangan dalam file 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,
}
Karena mode pengguna sistem headless (HSUM) dan pengguna Tamu tidak mendukung Kunci Aplikasi, Anda harus mengaktifkan Kunci Aplikasi hanya di profil sekunder. Gunakan konfigurasi ini untuk mengaktifkan aplikasi bagi pengguna sekunder.
Misalnya, di preinstalled-packages.xml Anda:
<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>