Supporta più utenti

Android supporta più utenti su un singolo dispositivo Android separando gli account e i dati delle app degli utenti. Ad esempio, i genitori potrebbero consentire ai figli di usare il tablet di famiglia, una famiglia può condividere un'automobile o un team di risposta di emergenza potrebbe condividere un dispositivo mobile per il servizio di guardia.

Terminologia

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

Generali

La gestione dei dispositivi Android utilizza i seguenti termini generali:

  • Utente: ogni utente è destinato a essere utilizzato da una persona fisica diversa. Ogni utente ha dati dell'app 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 è attivo un altro utente. Il sistema gestisce l'arresto degli utenti per risparmiare risorse, se opportuno. Gli utenti secondari possono essere creati direttamente tramite l'interfaccia utente o da un'app di amministrazione del dispositivo.
  • Account:gli account sono contenuti in 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 abbiano account per essere funzionali. L'elenco degli account varia in base all'utente. Per maggiori dettagli, consulta la definizione della classe Account.
  • Profilo:un profilo ha dati delle app separati, ma condivide alcune impostazioni di sistema (ad esempio Wi-Fi e Bluetooth). Un profilo è un sottoinsieme e correlato all'esistenza di un utente. Un utente può avere più profili. I profili vengono creati tramite un'app 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 il lifetime dell'utente che li ha creati.
  • App:i dati di un'app sono presenti in ogni utente associato. I dati dell'app sono in una sandbox separata da altre app dello stesso utente. Le app dello stesso utente possono interagire tra loro tramite IPC. Per maggiori dettagli, consulta Android for Enterprise.

Categorie di utenti

L'amministrazione dei dispositivi 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 dei dati 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 di sistema headless: primo utente aggiunto a un dispositivo se il dispositivo è configurato per funzionare in modalità utente di sistema headless (impostando ro.fw.mu.headless_system_user=true). L'utente di sistema headless viene eseguito sempre in background, pertanto questi dispositivi richiedono utenti in primo piano aggiuntivi per consentire l'interazione dell'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 amministrativo) e non possono influire su altri utenti su un dispositivo. Questi utenti possono essere eseguiti in background e continuare ad avere connettività di rete.
  • Utente ospite:utente secondario temporaneo. Gli utenti ospiti hanno un'opzione esplicita per eliminare rapidamente l'utente ospite quando non è più utile. 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 generali per più utenti. Per impostazione predefinita, solo l'utente di sistema è un amministratore.

Categorie di profili

Android utilizza le seguenti categorie di profili:

  • Profilo gestito:creato da un'app per contenere app e dati di lavoro. Sono gestiti esclusivamente dal proprietario del profilo (l'app che ha creato il profilo aziendale). Avvio, notifiche e attività recenti sono condivisi dall'utente principale e dal profilo aziendale.
  • Profilo con restrizioni: utilizza gli account basati sull'utente principale, che può controllare le app disponibili nel profilo con restrizioni. Disponibile solo su tablet e dispositivi TV.
  • Profilo clone: Android supporta la creazione di un tipo di utente del profilo clone distinto per consentire l'esecuzione di due istanze di una singola app sul dispositivo. AOSP non fornisce un supporto end-to-end per la funzionalità. Gli OEM devono aggiungere personalizzazioni per offrire la funzionalità completa agli utenti Android.
  • Profilo privato:è uno spazio in sandbox separato dal resto del dispositivo, che può essere bloccato separatamente dall'utente principale. Un profilo privato può esistere solo per l'utente principale. Quando il profilo privato è sbloccato, le app diventano visibili nelle impostazioni, in Sharesheet, in PhotoPicker e nella UI di Documenti, ma vengono nascoste quando sono bloccate. Il profilo privato può esistere sullo stesso dispositivo insieme al profilo di lavoro e al profilo clone.

Tipi di utenti

Android 11 ha formulato la classificazione di utenti e profili riportata sopra in tipi di utente ben definiti, che rappresentano tutti i diversi tipi di utenti e profili consentiti dalla funzionalità Multi-utente di Android.

I tipi di utenti 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
  • android.os.usertype.profile.PRIVATE

Gli OEM hanno la possibilità di configurare questi tipi di utenti sovrapponendo il fileframeworks/base/core/res/res/xml/config_user_types.xml. In questo modo, è più facile modificare la configurazione predefinita per ogni tipo di utente, incluse le relative restrizioni, icone, badge e il numero massimo di utenti consentito.

Oltre ai tipi di utenti AOSP configurabili, gli OEM possono definire nuovi tipi di profili utilizzando il file frameworks/base/core/res/res/xml/config_user_types.xml. In questo modo, gli OEM possono introdurre i propri tipi di profili non gestiti, se lo desiderano. Tuttavia, è responsabilità dell'OEM apportare le modifiche necessarie alla piattaforma per supportare le modifiche, inclusa la modifica di qualsiasi codice che controlli la presenza di profili gestiti in modo che ora gestisca il nuovo tipo di profilo, se opportuno.

Attivare la funzionalità multiutente

La funzionalità multiutente è disattivata per impostazione predefinita. Per attivare la funzionalità, i produttori di dispositivi devono definire un overlay della risorsa 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 attivare gli utenti ospiti e secondari sul dispositivo, utilizza la funzionalità DEVICE_PACKAGE_OVERLAYS del sistema di compilazione Android per sostituire i valori di:

  • 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 soggetti hanno modificato le impostazioni, devono assicurarsi che l'SMS e la telefonia funzionino come definito nel Compatibility Definition Document (CDD) di Android.

Gestire più utenti

La gestione di utenti e profili (ad eccezione dei profili con limitazioni) viene eseguita dalle app che invocano l'API in modo programmatico nella classe DevicePolicyManager per limitare l'utilizzo.

Le aziende possono utilizzare utenti e profili per gestire la durata e l'ambito di app e dati sui dispositivi, utilizzando i tipi descritti sopra in combinazione con le API DevicePolicyManager e UserManager per creare soluzioni uniche personalizzate per i loro casi d'uso.

Comportamento del sistema multiutente

Quando gli utenti vengono aggiunti a un dispositivo, alcune funzionalità vengono limitate quando un altro utente è in primo piano. Poiché i dati delle app sono separati per utente, lo stato di queste app varia in base all'utente. Ad esempio, le email destinate a un account di un utente non attualmente attivo non saranno disponibili finché l'utente e l'account non saranno attivi sul dispositivo.

Nota: per attivare o disattivare le funzioni di telefono e SMS per un utente secondario, vai a Impostazioni > Utenti, seleziona l'utente e disattiva l'impostazione Consenti chiamate e SMS.

Esistono alcune limitazioni 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 interrompe gli utenti secondari in background se il dispositivo ha bisogno di memoria aggiuntiva per le operazioni nell'utente in primo piano.

Quando utilizzi più utenti su un dispositivo Android, tieni presente quanto segue:

  • Le notifiche vengono visualizzate contemporaneamente per tutti gli account di un singolo utente.
  • Le notifiche per altri utenti non vengono visualizzate finché non sono attive.
  • Ogni utente ha 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ò influire sulle app installate per tutti gli utenti.
  • Un utente amministratore può rimuovere app o persino l'intero spazio di lavoro stabilito dagli utenti secondari.
  • Per impostazione predefinita, le informazioni di una sessione utente ospite non vengono conservate quando esci dalla modalità Ospite. Se vuoi che le informazioni di una sessione utente ospite rimangano invariate, devi creare un file di overlay della risorsa che imposti config_guestUserAllowEphemeralStateChange su false. Per ulteriori informazioni sulla creazione di file di overlay, consulta Personalizzare la compilazione con gli overlay delle risorse.

Android Automotive multiutente

Android Automotive si basa sull'implementazione multiutente di Android per offrire un'esperienza con il dispositivo condiviso.

Tipi di utenti nel settore auto e motori

Oltre ai tipi di utenti elencati sopra, le build per il settore auto e motori sono importanti per questi tipi di utenti:

  • Utente del sistema headless. L'utente di sistema ospita tutti i servizi di sistema. Per supportare più utenti in Automotive, l'utente di sistema deve essere anche headless. Esiste un solo utente headless. Un utente del sistema headless:
    • Deve essere sempre in esecuzione in background.
    • Non può essere rimosso o accessibile direttamente dall'utente, tranne nel caso del provisioning del dispositivo. 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 con un ripristino dei dati di fabbrica.
  • Utenti normali. Gli stessi di Utenti secondari, descritti sopra, tranne per il fatto che gli utenti secondari:
    • Non essere in esecuzione in background (dopo essere stata disattivata).
    • Possono essere creati direttamente tramite l'interfaccia utente.
    • Hanno dati delle app separati, ma condividono alcune impostazioni a livello di sistema. Ad esempio, Wi-Fi e Bluetooth.

Limitazioni

Le seguenti eccezioni si applicano all'utente di sistema headless e agli utenti regolari (secondari) in Automotive:

  • L'utente di sistema headless non supporta i profili di lavoro.
  • Per impostazione predefinita, gli utenti normali (secondari) hanno accesso completo alle chiamate e ai messaggi.
  • Per impostazione predefinita, gli utenti normali (secondari) non vengono eseguiti in background.

Attivare l'utente di sistema headless

A partire da Android 10, la funzionalità multiutente può essere utilizzata per i casi d'uso nel settore auto e motori. Ecco alcune delle differenze importanti:

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

Per attivare l'utente di sistema senza interfaccia, i produttori di dispositivi devono attivare il multiutente come descritto sopra.

Quando l'utente headless è attivato:
  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 di config_multiuserMaximumUsers su 2 (o versione successiva).

Per ulteriori informazioni, consulta la sezione Supporto multiutente in Automotive.

Android Automotive multiutente su più display

Android 15 consente agli utenti secondari con accesso completo (che non sono l'utente corrente in primo piano) di avviare attività e di accedere all'interfaccia utente sul display a cui sono assegnati. Questa funzionalità consente a più utenti contemporaneamente nel sistema operativo Android Automotive di supportare esperienze in auto che offrono a più passeggeri un'esperienza utente dedicata in una singola istanza di Android.

Per attivare questa funzionalità, i produttori di dispositivi devono definire un overlay della risorsa per sostituire il seguente valore in frameworks/base/core/res/res/values/config.xml:

<!-- Whether the device allows full users to start in background visible on displays.
Should be false for most devices, except automotive vehicle with passenger displays.
Note: this flag does NOT control the Communal Profile, which is not a full user. -->

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

Puoi fare esperimenti con un'esperienza solo per passeggeri (senza conducente) attivando 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 15, puoi anche attivare l'esperienza in auto per più passeggeri come utenti ospiti. Per attivare più utenti ospiti per l'utilizzo per lo sviluppo, i produttori di dispositivi devono definire un overlay della risorsa che configuri il numero massimo consentito di utenti ospiti in frameworks/base/core/res/res/xml/config_user_types.xml, ad esempio in questo esempio:

<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>