Blocco app consente agli utenti di proteggere singole app con un codice PIN univoco. In questo modo, i dati sensibili vengono protetti dall'accesso da parte di ospiti o utenti secondari, in particolare quando l'utente principale non si trova nel veicolo.
Blocco dell'app funziona indipendentemente dal profilo protetto. Questo design offre agli utenti la flessibilità di proteggere app sensibili specifiche senza dover bloccare l'intero profilo utente.
Blocco app è disponibile come app separata su Android 14 (livello API 34) e versioni successive. Puoi sviluppare questa app separatamente dalla piattaforma principale Android Automotive OS (AAOS). Tuttavia, devi eseguire il deployment dell'app Blocco app come app privilegiata firmata dalla piattaforma inclusa nell'immagine della piattaforma.
Gli utenti vengono informati della funzionalità Blocco app quando installano app:
Figura 1. Notifica Blocco app mostrata dopo l'installazione di un'app.
Blocco app è disattivato per impostazione predefinita. Dopo aver attivato la funzionalità, all'utente viene chiesto di impostare un PIN. Questo PIN è successivamente necessario per accedere a qualsiasi app protetta da Blocco app:
Figura 2. Impostazioni di Blocco app.
Quando tenta di aprire un'app bloccata, all'utente viene richiesto di inserire il codice PIN di Blocco app:
Figura 3. Prompt di Blocco app quando si tenta di aprire un'app bloccata.
Configurare il blocco app
Per applicare le configurazioni delle app, modifica 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>
Personalizzare le app bloccabili
Per impostazione predefinita, le app di sistema non sono bloccabili. Puoi specificare le app di sistema da
bloccare utilizzando la configurazione system_lockable_packages.
Le app principali come Impostazioni, le app di navigazione e gli assistenti vocali non possono essere bloccate perché ciò potrebbe causare un comportamento imprevedibile del sistema.
Per attivare Blocco app per un'app di sistema, utilizza l'elenco 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>
Configurare la sospensione dei contenuti multimediali
Per impostazione predefinita, le app multimediali possono essere bloccate se la piattaforma supporta l'app multimediale per auto dalla versione 17 o successive di Car-apps-release. Se non supporti la versione 17 o successive di Car-apps-release, puoi disattivare il blocco delle app multimediali:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Configurare un flusso di recupero
Gli utenti potrebbero dimenticare il PIN di Blocco app. Utilizza config_recoveryAccountType per
personalizzare il tipo di account utilizzato per il recupero del PIN.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
Il blocco app reimposta il PIN e cancella i dati privati delle app quando un utente esegue l'autenticazione
con un account del tipo corrispondente a config_recoveryAccountType.
Applica uno stile al codice di riferimento
Per personalizzare il codice di riferimento, utilizza gli overlay delle risorse di runtime (RRO) per sovrapporre
SensitiveAppLockOverlayableResources.
Poiché App Lock utilizza la libreria dell'interfaccia utente dell'auto, i tuoi RRO esistenti della libreria dell'interfaccia utente dell'auto possono essere applicati anche ad App Lock.
I tasti del tastierino PIN utilizzano lo stesso stile definito in styles.xml:
<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>
Puoi anche definire le dimensioni del tastierino:
<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>
Supporto della sospensione alla RAM
Per supportare la sospensione alla RAM, devi aggiungere il servizio Blocco app a
config_earlyStartupServices:
<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>
Configurazione di compilazione
Blocco app richiede autorizzazioni con privilegi di sistema. Le piattaforme che supportano il blocco app
devono dichiarare anche la funzionalità di sistema com.android.car.sensitive_app_lock.
Aggiungi la dichiarazione della funzionalità e le autorizzazioni a
com.android.car.sensitiveapplock.xml:
<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>
Blocco app deve essere importato come app di sistema firmata nel file Android.bp:
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,
}
Poiché la modalità utente di sistema headless (HSUM) e gli utenti ospiti non supportano il blocco app, devi attivare il blocco app solo nei profili secondari. Utilizza questa configurazione per attivare l'app per gli utenti secondari.
Ad esempio, nel tuo 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>