App-Sperre

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:

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

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:

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, die PIN für die App-Sperre einzugeben:

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

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>