Mit der App-Sperre können Nutzer einzelne Apps mit einem eindeutigen PIN-Code schützen. So werden sensible Daten vor dem Zugriff durch Gäste oder sekundäre Nutzer geschützt, insbesondere wenn sich der Hauptnutzer nicht im Fahrzeug befindet.
Die App-Sperre funktioniert unabhängig von der Profilsperre. So können Nutzer bestimmte vertrauliche Apps schützen, ohne das gesamte Nutzerprofil sperren zu müssen.
Die App-Sperre ist als eigenständige App für Android 14 (API‑Level 34) und höher verfügbar. Sie können diese App unabhängig von der AAOS-Kernplattform (Android Automotive OS) entwickeln. Sie müssen die App-Sperre jedoch als plattformsignierte privilegierte App bereitstellen, die in Ihrem Plattform-Image enthalten ist.
Nutzer werden bei der Installation von Apps über die App-Sperre informiert:
Abbildung 1. Benachrichtigung zur App-Sperre wird nach der Installation einer App angezeigt.
Die App-Sperre ist standardmäßig deaktiviert. Wenn der Nutzer die Funktion aktiviert, wird er aufgefordert, eine PIN festzulegen. Diese PIN ist anschließend erforderlich, um auf eine mit App-Sperre gesicherte App zuzugreifen:
Abbildung 2: Einstellungen für die App-Sperre
Wenn der Nutzer versucht, eine gesperrte App zu öffnen, wird er aufgefordert, den PIN-Code für die App-Sperre einzugeben:
Abbildung 3: Aufforderung zur App-Sperre beim Versuch, eine gesperrte App zu öffnen
App-Sperre konfigurieren
Wenn Sie Anwendungskonfigurationen anwenden möchten, bearbeiten Sie 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>
Sperrbare Apps anpassen
System-Apps sind standardmäßig nicht sperrbar. Mit der system_lockable_packages-Konfiguration können Sie festlegen, welche System-Apps gesperrt werden können.
Kern-Apps wie Einstellungen, Navigations-Apps und Sprachassistenten können nicht gesperrt werden, da dies zu unvorhersehbarem Systemverhalten führen kann.
So aktivieren Sie die App-Sperre für eine System-App über die Liste 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>
Media-Sperrung konfigurieren
Standardmäßig können Media-Apps gesperrt werden, wenn die Plattform die Car Media App ab Car-apps-Release 17 oder höher unterstützt. Wenn Sie Car-apps-release 17 oder höher nicht unterstützen, können Sie die Sperrung von Media-Apps deaktivieren:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Wiederherstellungsablauf einrichten
Nutzer vergessen möglicherweise ihre App-Sperr-PIN. Verwenden Sie config_recoveryAccountType, um den Kontotyp anzupassen, der für die PIN-Wiederherstellung verwendet wird.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
App-Sperre setzt die PIN zurück und löscht private App-Daten, wenn sich ein Nutzer mit einem Konto des Typs authentifiziert, der mit config_recoveryAccountType übereinstimmt.
Referenzcode gestalten
Verwenden Sie zum Anpassen des Referenzcodes Laufzeit-Ressourcen-Overlays (RROs), um SensitiveAppLockOverlayableResources zu überlagern.
Da App Lock die Car UI-Bibliothek verwendet, können Ihre vorhandenen RROs für die Car UI-Bibliothek auch auf App Lock angewendet werden.
Die Tasten des PIN-Pads haben denselben Stil wie in styles.xml definiert:
<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>
Sie können auch die Abmessungen des PIN-Pads definieren:
<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>
Unterstützung von „Suspend-to-RAM“
Wenn Sie den Ruhezustand im RAM unterstützen möchten, müssen Sie den App Lock-Dienst zu config_earlyStartupServices hinzufügen:
<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>
Build-Konfiguration
Für App-Sperre sind Berechtigungen auf Systemebene erforderlich. Auf Plattformen, die App-Sperre unterstützen, muss auch die Systemfunktion com.android.car.sensitive_app_lock deklariert werden.
Fügen Sie die Funktionsdeklaration und Berechtigungen zu com.android.car.sensitiveapplock.xml hinzu:
<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>
App Lock muss als signierte System-App in der Datei Android.bp importiert werden:
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,
}
Da der monitorlose Systemnutzermodus (Headless System User Mode, HSUM) und Gastnutzer die App-Sperre nicht unterstützen, müssen Sie die App-Sperre nur in sekundären Profilen aktivieren. Mit dieser Konfiguration können Sie die App für sekundäre Nutzer aktivieren.
Beispiel: In Ihrem 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>