Mit der App-Sperre können Nutzer einzelne Apps mit einem eindeutigen PIN-Code sichern. So werden vertrauliche Daten vor dem Zugriff durch Gäste oder Zweitnutzer geschützt, insbesondere wenn der Hauptnutzer nicht im Fahrzeug ist.
Die App-Sperre funktioniert unabhängig von der Profilsperre. So können Nutzer bestimmte vertrauliche Apps sichern, ohne das gesamte Nutzerprofil sperren zu müssen.
Die App-Sperre ist als separate App unter Android 14 (API-Level 34) und höher verfügbar. Sie können diese App unabhängig von der Android Automotive OS-Kernplattform (AAOS) entwickeln. Sie müssen die App-Sperre jedoch als plattformsignierte privilegierte App bereitstellen, die in Ihrem Plattformimage enthalten ist.
Nutzer werden über die App-Sperre informiert, wenn sie Apps installieren:
Abbildung 1 : Benachrichtigung zur App-Sperre nach der Installation einer App
Die App-Sperre ist standardmäßig deaktiviert. Wenn der Nutzer die Funktion aktiviert, wird er aufgefordert, eine PIN festzulegen. Diese PIN ist erforderlich, um auf Apps zuzugreifen, die mit der App-Sperre gesichert sind:
Abbildung 2 : Einstellungen für die App-Sperre
Wenn der Nutzer versucht, eine gesperrte App zu öffnen, wird er aufgefordert, die PIN für die App-Sperre einzugeben:
Abbildung 3 : Aufforderung zur Eingabe der PIN für die App-Sperre beim Versuch, eine gesperrte App zu öffnen
App-Sperre konfigurieren
Wenn Sie App-Konfigurationen 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
Standardmäßig können System-Apps nicht gesperrt werden. Mit der Konfiguration system_lockable_packages können Sie festlegen, dass System-Apps gesperrt werden können.
Kern-Apps wie die Einstellungen, Navigations-Apps und Sprachassistenten können nicht gesperrt werden, da dies zu unvorhersehbarem Systemverhalten führen kann.
Wenn Sie die App-Sperre für eine System-App aktivieren möchten, verwenden Sie 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>
Medienunterbrechung konfigurieren
Standardmäßig können Medien-Apps gesperrt werden, wenn die Plattform die Car Media App ab Car-apps-Release 17 unterstützt. Wenn Sie Car-apps-Release 17 oder höher nicht unterstützen, können Sie die Sperrung von Medien-Apps deaktivieren:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Wiederherstellungsablauf einrichten
Nutzer vergessen möglicherweise ihre PIN für die App-Sperre. Mit config_recoveryAccountType können Sie den Kontotyp anpassen, der für die PIN-Wiederherstellung verwendet wird.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
Die App-Sperre setzt die PIN zurück und löscht private App-Daten, wenn sich ein Nutzer mit einem Konto authentifiziert, dessen Typ mit config_recoveryAccountType übereinstimmt.
Referenzcode gestalten
Wenn Sie den Referenzcode anpassen möchten, verwenden Sie Laufzeit-Ressourcen-Overlays (Runtime Resource Overlays, RROs), um
SensitiveAppLockOverlayableResources zu überlagern.
Da die App-Sperre die Car UI Library verwendet, können Ihre vorhandenen RROs für die Car UI Library auch auf die App-Sperre 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>
Suspend-to-RAM unterstützen
Wenn Sie Suspend-to-RAM unterstützen möchten, müssen Sie den App-Sperre-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 die App-Sperre sind privilegierte Systemberechtigungen erforderlich. Plattformen, die die App-Sperre unterstützen, müssen auch die Systemfunktion com.android.car.sensitive_app_lock deklarieren.
Fügen Sie die Funktionsdeklaration und die 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>
Die App-Sperre muss als signierte System-App in die 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 Modus für den Headless-Systemnutzer (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. Verwenden Sie diese Konfiguration, um die App für Zweitnutzer zu aktivieren.
Beispiel: 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>