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 utente AOSP predefiniti e definire nuovi tipi di profilo. Per ulteriori informazioni vedere la sezione sui tipi di utente .
Questa pagina descrive in dettaglio le linee guida di implementazione necessarie per personalizzare i tipi di utente.
Personalizzazione
Per personalizzare i tipi di utente AOSP e definire nuovi tipi di profilo, l'OEM deve sovrapporre a config_user_types.xml
le personalizzazioni desiderate. Il file config_user_types.xml
contiene un'implementazione di riferimento e un elenco completo di attributi configurabili.
Qualsiasi attributo, come default-restrictions
, specificato nel file config_user_types.xml
, sovrascrive l'impostazione predefinita AOSP. Qualsiasi attributo non specificato obbedisce all'impostazione predefinita AOSP. La modifica della maggior parte degli attributi, come gli attributi del badge di un tipo di profilo, influisce sugli utenti preesistenti di quel tipo di utente. Tuttavia, poiché default-restrictions
vengono applicate solo al momento della creazione di un utente, la modifica di questo particolare attributo, nel caso in cui il file config_user_types.xml
venga modificato da OTA, non ha alcun effetto sugli utenti preesistenti. Allo stesso modo, specificare il numero massimo di utenti si applica solo quando si creano nuovi utenti; gli utenti esistenti non vengono rimossi.
Le attuali restrizioni di personalizzazione per ciascun tipo di utente sono le seguenti:
- I profili possono essere completamente personalizzati e definiti. In questo caso, l'OEM è responsabile di apportare le modifiche alla piattaforma necessarie affinché il proprio profilo personalizzato sia supportato in Android, poiché AOSP supporta solo i tipi di utente AOSP predefiniti.
- Non è possibile definire utenti completi e solo il loro attributo
default-restrictions
può essere personalizzato. - L'utente del sistema non può essere personalizzato utilizzando questo meccanismo. In questo caso,
default-restrictions
possono essere impostate utilizzandocom.android.internal.R.array.config_defaultFirstUserRestrictions
. Per ulteriori informazioni, vedereconfig.xml
.
Modifica i tipi di utenti esistenti
I tipi di utente esistenti possono essere personalizzati sovrascrivendo i relativi attributi come mostrato nell'esempio di codice seguente.
<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 utente AOSP vengono personalizzati modificando le proprietà supportate.
Utente completo
android.os.usertype.full.SECONDARY
:- La restrizione predefinita di
no_sms
è impostata su true specificandodefault-restrictions no_sms="true"
.
- La restrizione predefinita di
Profilo utente
android.os.usertype.profile.MANAGED
:- Sono consentiti due profili per ciascun utente genitore impostando
max-allowed-per-parent='2'
. - Gli attributi del badge vengono impostati sui valori desiderati utilizzando
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Le restrizioni predefinite di
no_sms
eno_outgoing_calls
sono impostate su true specificandodefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Sono consentiti due profili per ciascun utente genitore impostando
Fare riferimento a UserTypeFactory.java
e UserTypeDetails.java
per il significato e i valori predefiniti di queste proprietà.
Definire i tipi di profilo personalizzato
Il seguente esempio di codice mostra come vengono definiti i nuovi tipi di profilo 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
è definito come segue:
max-allowed-per-parents
è impostato su2
per due profili per utente genitore.change-user-type
: converte tutti i profili gestiti esistenti del tipoandroid.os.usertype.profile.MANAGED
nel nuovo tipocom.example.profilename
quando si aggiorna il dispositivo da una versioneuser-type
di<= 1
tramite OTA.