Android 11 ha introdotto il concetto di tipi di utenti ben definiti, che rappresentano tutti i diversi tipi di utenti consentiti dalla funzionalità multiutente di Android. Con questa funzionalità, gli OEM possono personalizzare i tipi di utenti AOSP predefiniti e definire nuovi tipi di profili. Per ulteriori informazioni, consulta la sezione sui tipi di utenti.
Questa pagina descrive le linee guida di implementazione necessarie per personalizzare i tipi di utenti.
Personalizzazione
Per personalizzare i tipi di utenti AOSP e definire nuovi tipi di profili, l'OEM
deve sovrapporre
config_user_types.xml
con le personalizzazioni preferite. Il file config_user_types.xml contiene un'implementazione di riferimento e un elenco completo di attributi configurabili.
Qualsiasi attributo, ad esempio default-restrictions, specificato nel file config_user_types.xml sovrascrive il valore predefinito di AOSP. Qualsiasi attributo non specificato rispetta il valore predefinito di AOSP. La modifica della maggior parte degli attributi, ad esempio gli attributi dei badge di un tipo di profilo, influisce sugli utenti preesistenti di quel tipo di utente.
Tuttavia, poiché default-restrictions viene applicato solo al momento della creazione di un utente, la modifica di questo attributo specifico, nel caso in cui il file config_user_types.xml venga modificato tramite OTA, non ha alcun effetto sugli utenti preesistenti. Allo stesso modo, la specifica del numero massimo di utenti si applica solo alla creazione di nuovi utenti; gli utenti esistenti non vengono rimossi.
Le attuali limitazioni di personalizzazione per ogni tipo di utente sono le seguenti:
- I profili possono essere completamente personalizzati e definiti. In questo caso, l'OEM è responsabile dell'apporto delle modifiche alla piattaforma necessarie per supportare il profilo personalizzato in Android, poiché AOSP supporta solo i tipi di utenti AOSP predefiniti.
- Gli utenti con accesso completo non possono essere definiti e solo il relativo attributo
default-restrictionspuò essere personalizzato. - L'utente di sistema non può essere personalizzato utilizzando questo meccanismo. In questo caso,
default-restrictionspuò essere impostato utilizzandocom.android.internal.R.array.config_defaultFirstUserRestrictions. Per ulteriori informazioni, consultaconfig.xml.
Modificare i tipi di utenti esistenti
I tipi di utenti esistenti possono essere personalizzati sostituendo i relativi attributi, come mostrato nel seguente esempio di codice:
<user-types version="0">
<full-type name="android.os.usertype.full.SECONDARY" >
<default-restrictions no_sms="true" />
</full-type>
<profile-type
name='android.os.usertype.profile.MANAGED'
max-allowed-per-parent='2'
icon-badge='@android:drawable/ic_corp_icon_badge_case'
badge-plain='@android:drawable/ic_corp_badge_case'
badge-no-background='@android:drawable/ic_corp_badge_no_background' >
<badge-labels>
<item res='@android:string/managed_profile_label_badge' />
<item res='@android:string/managed_profile_label_badge_2' />
</badge-labels>
<badge-colors>
<item res='@android:color/profile_badge_1' />
<item res='@android:color/profile_badge_2' />
</badge-colors>
<default-restrictions no_sms="true" no_outgoing_calls="true" />
</profile-type>
</user-types>
In questo esempio di codice, i seguenti tipi di utenti AOSP vengono personalizzati modificando le proprietà supportate:
Utente con accesso completo
android.os.usertype.full.SECONDARY:- La limitazione predefinita di
no_smsè impostata su true specificandodefault-restrictions no_sms="true".
- La limitazione predefinita di
Utente del profilo
android.os.usertype.profile.MANAGED:- Sono consentiti due profili per ogni utente genitore impostando
max-allowed-per-parent='2'. - Gli attributi dei badge sono impostati sui valori scelti utilizzando
icon-badge,badge-plain,badge-no-background,badge-labels,badge-colors. - Le limitazioni predefinite di
no_smseno_outgoing_callssono impostate su true specificandodefault-restrictions no_sms="true" no_outgoing_calls="true".
- Sono consentiti due profili per ogni utente genitore impostando
Per il significato e i valori predefiniti di queste proprietà, consulta UserTypeFactory.java e UserTypeDetails.java.
Definire tipi di profili personalizzati
Il seguente esempio di codice mostra come vengono definiti i nuovi tipi di profili personalizzati:
<user-types version="1">
<profile-type
name="com.example.profilename"
max-allowed-per-parent="2" />
<change-user-type
from="android.os.usertype.profile.MANAGED"
to="com.example.profilename"
whenVersionLeq="1" />
</user-types>
In questo esempio di codice, il tipo di profilo com.example.profilename viene definito come segue:
max-allowed-per-parentsè impostato su2per due profili per utente genitore.change-user-type: converte tutti i profili gestiti esistenti del tipoandroid.os.usertype.profile.MANAGEDnel nuovocom.example.profilenametipo quando esegui l'upgrade del dispositivo da una versioneuser-typedi<= 1tramite OTA.