Supportare 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 un team di risposta critica potrebbe condividere un dispositivo mobile per il servizio di guardia.

Terminologia

Android utilizza i seguenti termini per descrivere utenti e 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 ha dati applicativi distinti e alcune impostazioni univoche, nonché 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 conservare le risorse quando appropriato. Gli utenti secondari possono essere creati direttamente tramite l'interfaccia utente o da un'applicazione di amministrazione del dispositivo .
  • Conto . 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. Utenti e profili contengono i propri account univoci ma non è necessario che dispongano di account per funzionare. L'elenco degli account varia a seconda dell'utente. Per i dettagli, fare riferimento alla definizione della classe di conti .
  • 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 padre, definito dall'utente che ha creato il profilo. I profili non esistono oltre la durata dell'utente che crea.
  • App . I dati di un'applicazione esistono all'interno di ogni utente associato. I dati dell'app vengono inseriti nella sandbox da altre applicazioni all'interno dello stesso utente. Le app all'interno dello stesso utente possono interagire tra loro tramite IPC. Per i dettagli, fare riferimento ad Android per le aziende .

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 ha anche privilegi e impostazioni speciali che solo lui può impostare.
  • Utente secondario . Qualsiasi utente aggiunto al dispositivo diverso dall'utente del 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 ad avere la connettività di rete.
  • Utente ospite . Utente secondario temporaneo. Gli utenti guest hanno un'opzione esplicita per eliminare rapidamente l'utente guest quando la sua utilità è terminata. Può esserci un solo utente ospite alla volta.
  • Utente amministratore . Un utente che dispone dell'autorizzazione per creare e rimuovere altri utenti, oltre a controllare alcune impostazioni multiutente generali. Per impostazione predefinita, solo l'utente del sistema è un amministratore.

Categorie di profili

L'amministrazione del dispositivo 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 corp). Il programma di avvio, le notifiche e le attività recenti sono condivisi dall'utente principale e dal profilo aziendale.
  • Profilo riservato . Utilizza account basati sull'utente principale, che può controllare quali app sono disponibili nel profilo con restrizioni. Disponibile solo su tablet e dispositivi televisivi.

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

Gli OEM hanno la possibilità di configurare questi tipi di utenti 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 relative restrizioni predefinite, icone, badge e il numero massimo consentito di utenti.

Oltre ai tipi 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 gestiti, se lo desiderano. Tuttavia, è responsabilità dell'OEM apportare le modifiche alla piattaforma necessarie per supportare le modifiche, inclusa la modifica di qualsiasi codice che controlla i profili gestiti per gestire ora il nuovo tipo di profilo, se appropriato.

Abilitazione multiutente

A partire da Android 5.0, la funzione multiutente è disabilitata per impostazione predefinita. Per abilitare la funzione, 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 guest e secondari sul dispositivo, utilizza la funzione 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 SMS e telefonia funzionino come definito nel documento di definizione della compatibilità di Android (CDD).

Gestione di più utenti

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

Le scuole e le imprese possono impiegare utenti e profili per gestire la durata e l'ambito di app e dati sui dispositivi, utilizzando i tipi descritti sopra insieme all'API 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é quell'utente e quell'account non saranno attivi sul dispositivo.

Per impostazione predefinita, solo l'utente del sistema ha pieno accesso alle telefonate e agli SMS. L'utente secondario può ricevere chiamate in entrata ma non può inviare o ricevere SMS. Un utente amministratore deve abilitare queste funzioni per gli altri.

Nota : per abilitare o disabilitare le funzioni telefono e SMS per un utente secondario, vai in Impostazioni > Utenti , seleziona l'utente e disattiva l'impostazione Consenti chiamate 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 rendere attivi i servizi Bluetooth. Inoltre, il processo di sistema interromperà gli utenti secondari in background se il dispositivo necessita di memoria aggiuntiva per le operazioni nell'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 altri utenti non vengono visualizzate finché non sono attive.
  • Ogni utente ottiene 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'intero spazio di lavoro stabilito da utenti secondari.

Android 7.0 include diversi miglioramenti, tra cui:

  • Attiva/disattiva profilo di lavoro . Gli utenti possono disabilitare il proprio profilo gestito (ad esempio quando non sono al lavoro). Questa funzionalità si ottiene arrestando l'utente; UserManagerService chiama ActivityManagerNative#stopUser() .
  • VPN sempre attiva . Le applicazioni VPN ora possono essere impostate su sempre attive dall'utente, DPC dispositivo o DPC profilo gestito (si applica solo alle applicazioni profilo gestito). Se abilitate, le applicazioni non possono accedere alla rete pubblica (l'accesso alle risorse di rete viene interrotto finché la VPN non si è connessa e le connessioni possono essere instradate su di essa). I dispositivi che segnalano device_admin devono implementare una VPN sempre attiva.

Per maggiori dettagli sulle funzioni di amministrazione del dispositivo Android 7.0, fare riferimento a Android for Work .

Multiutente Android Automotive

Android Automotive si basa sull'implementazione multiutente di Android per fornire un'esperienza condivisa del dispositivo.

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'è un solo utente senza testa. Un utente del sistema senza testa:
    • Deve essere sempre eseguito in background.
    • Non possono essere rimossi o accessibili direttamente dall'utente tranne nel caso di 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 da un ripristino delle impostazioni di fabbrica.
  • Utenti abituali. Uguale agli Utenti Secondari , sopra descritti, salvo che gli Utenti Secondari:
    • Non correre in background (dopo essere stato spento).
    • Può essere creato direttamente tramite l'interfaccia utente.
    • Disponi di dati app separati ma condividi 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) in Automotive:

  • L'utente del sistema senza testa non supporta i profili di lavoro.
  • Per impostazione predefinita, gli utenti regolari (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 senza testa

A partire da Android 10, la funzione multiutente può essere utilizzata per casi d'uso automobilistici. Le distinzioni importanti includono:

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

Per abilitare l'utente del sistema senza testa, i produttori di dispositivi devono abilitare il multiutente come descritto sopra.

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

Per ulteriori informazioni, vedere Supporto multiutente in Automotive.