App-Sperre

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:

Benachrichtigung zur App-Sperre wird nach der Installation einer App angezeigt

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:

Einstellungen für die App-Sperre

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:

Aufforderung zur App-Sperre beim Versuch, eine gesperrte App zu öffnen

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>