Supporta più utenti

Android supporta più utenti su un singolo dispositivo Android separando gli account utente e i dati dell'applicazione. Ad esempio, i genitori possono consentire ai propri figli di utilizzare il tablet di famiglia, una famiglia può condividere un’automobile o una squadra di risposta critica potrebbe condividere un dispositivo mobile per i servizi di guardia.

Terminologia

Android utilizza i seguenti termini per descrivere gli utenti e gli account Android.

Generale

La gestione dei dispositivi Android utilizza i seguenti termini generali:

  • Utente: Ogni utente è destinato ad essere utilizzato da una persona fisica diversa. Ogni utente dispone di dati applicativi distinti e di alcune impostazioni univoche, nonché di un'interfaccia utente per passare esplicitamente da un utente all'altro. Un utente può essere eseguito in background quando un altro utente è attivo; il sistema gestisce l'arresto degli utenti per risparmiare risorse quando appropriato. Gli utenti secondari possono essere creati direttamente tramite l'interfaccia utente o da un'applicazione di amministrazione del dispositivo .
  • Account: gli account sono contenuti all'interno di un utente ma non sono definiti da un utente, né un utente è definito o collegato a un determinato account. Gli utenti e i profili contengono i propri account univoci ma non è necessario che dispongano di account per funzionare. L'elenco degli account varia in base all'utente. Per i dettagli, fare riferimento alla definizione della classe di conto .
  • Profilo: un profilo ha dati app separati ma condivide alcune impostazioni a livello di sistema (ad esempio Wi-Fi e Bluetooth). Un profilo è un sottoinsieme e legato all'esistenza di un utente. Un utente può avere più profili. I profili vengono creati tramite un'applicazione di amministrazione del dispositivo . Un profilo ha sempre un'associazione immutabile a un utente principale, definito dall'utente che ha creato il profilo. I profili non esistono oltre la vita dell'utente che li crea.
  • App: i dati di un'applicazione esistono all'interno di ciascun utente associato. I dati dell'app vengono sottoposti a sandbox da altre applicazioni all'interno dello stesso utente. Le app dello stesso utente possono interagire tra loro tramite IPC. Per maggiori dettagli, fare riferimento ad Android for enterprise .

Categorie di utenti

L'amministrazione del dispositivo Android utilizza le seguenti categorie di utenti.

  • Utente di sistema: primo utente aggiunto a un dispositivo. L'utente di sistema non può essere rimosso se non tramite il ripristino delle impostazioni di fabbrica ed è sempre in esecuzione anche quando altri utenti sono in primo piano. Questo utente dispone inoltre di privilegi e impostazioni speciali che solo lui può impostare.
  • Utente del sistema headless: primo utente aggiunto a un dispositivo se il dispositivo è configurato per essere eseguito in modalità utente del sistema headless (impostando ro.fw.mu.headless_system_user=true ). L'utente del sistema headless viene sempre eseguito in background, quindi tali dispositivi richiedono ulteriori utenti in primo piano per consentire l'interazione con l'utente.
  • Utente secondario: qualsiasi utente aggiunto al dispositivo diverso dall'utente di sistema. Gli utenti secondari possono essere rimossi (da soli o da un utente amministratore) e non possono influire su altri utenti su un dispositivo. Questi utenti possono essere eseguiti in background e continuare a disporre della connettività di rete.
  • Utente ospite: utente secondario temporaneo. Gli utenti ospiti hanno un'opzione esplicita per eliminare rapidamente l'utente ospite quando la sua utilità termina. Può esserci un solo utente ospite alla volta.
  • Utente amministratore: un utente che dispone dell'autorizzazione per creare e rimuovere altri utenti, nonché per controllare alcune impostazioni multiutente generali. Per impostazione predefinita, solo l'utente del sistema è un amministratore.

Categorie di profili

Android utilizza le seguenti categorie di profili:

  • Profilo gestito: creato da un'applicazione per contenere dati di lavoro e app. Sono gestiti esclusivamente dal proprietario del profilo (l'app che ha creato il profilo aziendale). Avvio applicazioni, notifiche e attività recenti sono condivise dall'utente principale e dal profilo aziendale.
  • Profilo limitato: utilizza account basati sull'utente principale, che può controllare quali app sono disponibili nel profilo limitato. Disponibile solo su tablet e dispositivi televisivi.
  • Profilo clone: ​​Android supporta la creazione di un tipo utente di profilo clone separato per consentire l'esecuzione di due istanze di una singola app sul dispositivo. AOSP non fornisce supporto end-to-end per la funzionalità. Gli OEM devono aggiungere personalizzazioni per fornire la funzionalità completa agli utenti Android.

Tipi di utenti

Android 11 ha formulato la suddetta classificazione di utenti e profili in tipi di utenti ben definiti, che rappresentano tutti i diversi tipi di utenti e profili consentiti dalla funzionalità multiutente di Android.

I tipi di utente AOSP predefiniti sono definiti in frameworks/base/core/java/android/os/UserManager.java e attualmente includono:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS
  • android.os.usertype.profile.CLONE

Gli OEM hanno la possibilità di configurare questi tipi di utente sovrapponendo il file frameworks/base/core/res/res/xml/config_user_types.xml . Ciò facilita la modifica della configurazione predefinita per ciascun tipo di utente, comprese le restrizioni predefinite, le icone, i badge e il numero massimo consentito di utenti.

Oltre ai tipi di utente AOSP configurabili, gli OEM possono definire nuovi tipi di profilo utilizzando il file frameworks/base/core/res/res/xml/config_user_types.xml . Ciò consente agli OEM di introdurre i propri tipi di profilo non gestito, se lo desiderano. Tuttavia, è responsabilità dell'OEM apportare le modifiche alla piattaforma necessarie per supportare le modifiche, inclusa la modifica di qualsiasi codice che verifica che i profili gestiti ora gestiscano il nuovo tipo di profilo, se appropriato.

Abilitazione multiutente

La funzionalità multiutente è disabilitata per impostazione predefinita. Per abilitare la funzionalità, i produttori di dispositivi devono definire un overlay di risorse che sostituisca i seguenti valori in frameworks/base/core/res/res/values/config.xml :

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

Per applicare questo overlay e abilitare gli utenti ospiti e secondari sul dispositivo, utilizza la funzionalità DEVICE_PACKAGE_OVERLAYS del sistema di build Android per sostituire i valori per:

  • config_multiuserMaximumUsers con un valore maggiore di 1
  • config_enableMultiUserUI con true

I produttori di dispositivi possono decidere il numero massimo di utenti. Se i produttori di dispositivi o altri hanno modificato le impostazioni, devono garantire che gli SMS e la telefonia funzionino come definito nell'Android Compatibility Definition Document (CDD).

Gestione di più utenti

La gestione di utenti e profili (ad eccezione dei profili limitati) viene eseguita da applicazioni che richiamano a livello di codice l'API nella classe DevicePolicyManager per limitarne l'utilizzo.

Le aziende possono impiegare utenti e profili per gestire la durata e l'ambito delle app e dei dati sui dispositivi, utilizzando le tipologie sopra descritte insieme alle API DevicePolicyManager e UserManager per creare soluzioni uniche su misura per i loro casi d'uso.

Comportamento del sistema multiutente

Quando gli utenti vengono aggiunti a un dispositivo, alcune funzionalità vengono ridotte quando un altro utente è in primo piano. Poiché i dati delle app sono separati per utente, lo stato di tali app varia in base all'utente. Ad esempio, l'e-mail destinata a un account di un utente non attualmente attivo non sarà disponibile finché l'utente e l'account non saranno attivi sul dispositivo.

Nota : per abilitare o disabilitare le funzioni telefono e SMS per un utente secondario, vai su Impostazioni > Utenti , seleziona l'utente e disattiva l'impostazione Consenti chiamate telefoniche e SMS .

Esistono alcune restrizioni quando un utente secondario è in background. Ad esempio, l'utente secondario in background non può visualizzare l'interfaccia utente o attivare i servizi Bluetooth. Inoltre, il processo di sistema interromperà gli utenti secondari in background se il dispositivo necessita di memoria aggiuntiva per le operazioni dell'utente in primo piano.

Quando utilizzi più utenti su un dispositivo Android, tieni presente il seguente comportamento:

  • Le notifiche vengono visualizzate per tutti gli account di un singolo utente contemporaneamente.
  • Le notifiche per gli altri utenti non vengono visualizzate finché non sono attive.
  • Ogni utente riceve uno spazio di lavoro per installare e posizionare le app.
  • Nessun utente ha accesso ai dati dell'app di un altro utente.
  • Qualsiasi utente può influenzare le app installate per tutti gli utenti.
  • Un utente amministratore può rimuovere app o persino l'intera area di lavoro stabilita dagli utenti secondari.
  • Per impostazione predefinita, le informazioni di una sessione utente Ospite non persistono quando si esce dalla modalità Ospite. Se si desidera che le informazioni di una sessione utente Guest persistano, è necessario creare un file di sovrapposizione delle risorse che imposti config_guestUserAllowEphemeralStateChange su false . Per ulteriori informazioni sulla creazione di file di sovrapposizione, fare riferimento a Personalizzazione della build con sovrapposizioni di risorse .

Multiutente Android Automotive

Android Automotive si affida all'implementazione multiutente di Android per fornire un'esperienza di dispositivo condivisa.

Tipi di utenti automobilistici

Oltre ai tipi di utenti sopra elencati, le build automobilistiche sono degne di nota per questi tipi di utenti:

  • Utente del sistema senza testa. L'utente del sistema ospita tutti i servizi di sistema. Per supportare più utenti su Automotive, anche l'utente del sistema deve essere headless . C'è solo un utente senza testa. Un utente del sistema headless:
    • Deve essere sempre eseguito in background.
    • Non è possibile rimuoverlo o accedervi direttamente dall'utente, tranne nel caso del Device Provisioning. Ad esempio, gli utenti non possono passare a questo tipo di utente per eseguire attività come scaricare app o aggiungere account.
    • Può essere cancellato solo tramite un ripristino delle impostazioni di fabbrica.
  • Utenti abituali. Lo stesso degli Utenti Secondari , descritti sopra, tranne che gli utenti secondari:
    • Non eseguire in background (dopo essere stati allontanati da).
    • Può essere creato direttamente tramite l'interfaccia utente.
    • Hanno dati app separati ma condividono alcune impostazioni a livello di sistema. Ad esempio, Wi-Fi e Bluetooth.

Avvertenze

Le seguenti eccezioni si applicano agli utenti del sistema headless e agli utenti regolari (secondari) nel settore automobilistico:

  • L'utente del sistema headless non supporta i profili di lavoro.
  • Per impostazione predefinita, gli utenti normali (secondari) hanno pieno accesso alle telefonate e agli SMS.
  • Per impostazione predefinita, gli utenti normali (secondari) non vengono eseguiti in background.

Abilitazione dell'utente del sistema headless

A partire da Android 10, la funzionalità multiutente può essere utilizzata per casi d'uso automobilistici. Distinzioni importanti includono:

  • L'utente del sistema è senza testa e funziona solo in background.
  • Gli utenti umani non interagiscono con l'utente del sistema.

Per abilitare l'utente del sistema headless, i produttori dei dispositivi devono abilitare il multiutente come descritto sopra.

Quando l'utente headless è abilitato:
  1. Per dichiarare il dispositivo come Automotive, aggiungi la funzionalità android.hardware.type.automotive .
  2. Imposta ro.fw.headless_system_user su true .
  3. Imposta il valore per config_multiuserMaximumUsers su 2 (o superiore).

Per ulteriori informazioni, vedere Supporto multiutente nel settore automobilistico.

Multiutente Android Automotive su più display

Una nuova funzionalità sperimentale in Android 14 consente agli utenti secondari completi (che non sono l'attuale utente in primo piano) di avviare attività e ottenere l'accesso all'interfaccia utente sul display a cui sono assegnati. Questa funzionalità consente a più utenti simultanei nel sistema operativo Android Automotive di supportare esperienze in auto che forniscono a più passeggeri un'esperienza di interfaccia utente dedicata in una singola istanza Android.

Per abilitare questa funzionalità per l'uso in fase di sviluppo, i produttori di dispositivi devono definire una sovrapposizione di risorse per sostituire il seguente valore in frameworks/base/core/res/res/values/config.xml :

<!-- Whether the device allows users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

Puoi sperimentare un'esperienza riservata ai soli passeggeri (senza conducente) abilitando la seguente configurazione aggiuntiva:

<!-- Whether the device allows users to start in background visible on the default display.
    Should be false for all devices in production. Can be enabled only for development use
    in passenger-only automotive build (i.e., when Android runs in a separate system in the
    back seat to manage the passenger displays).
    When set to true, config_multiuserVisibleBackgroundUsers must also be true. -->

<bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>

In Android 14 puoi abilitare l'esperienza in auto per più passeggeri come utenti ospiti. Per abilitare più utenti guest per l'utilizzo in fase di sviluppo, i produttori di dispositivi devono definire un overlay di risorse che configuri il numero massimo consentito di utenti guest in frameworks/base/core/res/res/xml/config_user_types.xml , come nell'esempio seguente:

<user-types>
   <full-type
       name="android.os.usertype.full.GUEST"
       max-allowed='4'>
       <default-restrictions no_factory_reset="true"
           no_remove_user="true"
           no_modify_accounts="true"
           no_install_apps="true"
           no_install_unknown_sources="true"
           no_uninstall_apps="true"/>
   </full-type>
</user-types>