Uygulama Kilidi, kullanıcıların her uygulamayı benzersiz bir PIN koduyla korumasına olanak tanır. Bu özellik, özellikle birincil kullanıcı araçta değilken misafirlerin veya ikincil kullanıcıların hassas verilere erişmesini engeller.
Uygulama Kilidi, profil kilidinden bağımsız olarak çalışır. Bu tasarım, kullanıcıların hassas uygulamaları güvenli hale getirmek için tüm kullanıcı profilini kilitlemesine gerek kalmadan belirli uygulamaları güvenli hale getirme esnekliği sunar.
Uygulama Kilidi, Android 14 (API düzeyi 34) ve sonraki sürümlerde ayrı bir uygulama olarak kullanılabilir. Bu uygulamayı temel Android Automotive OS (AAOS) platformundan ayrı olarak geliştirebilirsiniz. Ancak, Uygulama Kilidi uygulamasını platformunuzun resmine dahil edilmiş, platform tarafından imzalanmış ayrıcalıklı bir uygulama olarak dağıtmanız gerekir.
Kullanıcılar, uygulama yüklerken Uygulama Kilidi özelliği hakkında bilgilendirilir:
Şekil 1. Uygulama Kilidi bildirimi, bir uygulama yüklendikten sonra gösterilir.
Uygulama Kilidi varsayılan olarak devre dışıdır. Özellik etkinleştirildiğinde kullanıcıdan PIN ayarlaması istenir. Bu PIN, Uygulama Kilidi ile güvenliği sağlanan uygulamalara erişmek için gereklidir:
Şekil 2. Uygulama Kilidi ayarları
Kilitli bir uygulamayı açmaya çalışan kullanıcıdan Uygulama Kilidi PIN kodunu girmesi istenir:
Şekil 3. Kilitli bir uygulamayı açmaya çalışırken Uygulama Kilidi istemi gösterilir.
Uygulama Kilidi'ni yapılandırma
Uygulama yapılandırmalarını uygulamak için res/values/config.xml dosyasını düzenleyin:
<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>
Kilitlenebilir uygulamaları özelleştirme
Varsayılan olarak sistem uygulamaları kilitlenemez. system_lockable_packages yapılandırmasını kullanarak kilitlenebilir sistem uygulamalarını belirtebilirsiniz.
Ayarlar, gezinme uygulamaları ve sesli asistanlar gibi temel uygulamalar kilitlenemez. Aksi takdirde sistemin beklenmedik şekilde çalışmasına neden olunabilir.
Bir sistem uygulaması için uygulama kilidini etkinleştirmek üzere system_lockable_packages listesini kullanın:
<!-- 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>
Medya oynatmayı duraklatma özelliğini yapılandırma
Platform, Car-apps-release 17 veya sonraki sürümlerden Car Media App'i destekliyorsa medya uygulamaları varsayılan olarak kilitlenebilir. Car-apps-release 17 veya daha yeni bir sürümü desteklemiyorsanız medya uygulaması kilitlemeyi devre dışı bırakabilirsiniz:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Kurtarma akışı oluşturma
Kullanıcılar, uygulama kilidi PIN'lerini unutabilir. PIN kurtarma için kullanılan hesap türünü özelleştirmek üzere config_recoveryAccountType simgesini kullanın.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
Uygulama Kilidi, kullanıcı config_recoveryAccountType ile eşleşen türde bir hesapla kimlik doğruladığında PIN'i sıfırlar ve özel uygulama verilerini temizler.
Referans kodunu biçimlendirme
Referans kodunu özelleştirmek için çalışma zamanı kaynak kaplamalarını (RRO'lar) kullanarak SensitiveAppLockOverlayableResources öğesini kaplayın.
Uygulama Kilidi, Araba kullanıcı arayüzü kitaplığını kullandığından mevcut Araba kullanıcı arayüzü kitaplığı RRO'larınız Uygulama Kilidi'ne de uygulanabilir.
PIN kodu tuşları, styles.xml içinde tanımlanan aynı stili kullanır:
<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>
PIN kodu tuş takımının boyutlarını da tanımlayabilirsiniz:
<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'e askıya alma özelliğini destekleme
Askıya alıp RAM'e yazma özelliğini desteklemek için Uygulama Kilidi hizmetini config_earlyStartupServices'ye eklemeniz gerekir:
<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>
Derleme yapılandırması
Uygulama Kilidi için sistem ayrıcalıklı izinleri gerekir. Uygulama Kilidi'ni destekleyen platformlar, com.android.car.sensitive_app_lock sistem özelliğini de bildirmelidir.
Özellik beyanını ve izinleri com.android.car.sensitiveapplock.xml'ya ekleyin:
<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>
Uygulama Kilidi, Android.bp dosyasında imzalı bir sistem uygulaması olarak içe aktarılmalıdır:
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,
}
Başsız sistem kullanıcı modu (HSUM) ve misafir kullanıcılar, uygulama kilidini desteklemediğinden uygulama kilidini yalnızca ikincil profillerde etkinleştirmeniz gerekir. İkincil kullanıcılar için uygulamayı etkinleştirmek üzere bu yapılandırmayı kullanın.
Örneğin, 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>