Android 11 a introduit le concept de types d'utilisateurs bien définis, qui représentent tous les types d'utilisateurs autorisés par la fonctionnalité multi-utilisateur d'Android. Cette fonctionnalité permet aux OEM de personnaliser les types d'utilisateurs AOSP prédéfinis et de définir de nouveaux types de profils. Pour en savoir plus, consultez la section Types d'utilisateurs.
Cette page décrit les consignes d'implémentation nécessaires pour personnaliser les types d'utilisateurs.
Personnalisation
Pour personnaliser les types d'utilisateurs AOSP et définir de nouveaux types de profils, l'OEM doit superposer config_user_types.xml avec les personnalisations souhaitées. Le fichier config_user_types.xml contient une implémentation de référence et une liste complète d'attributs configurables.
Tout attribut spécifié dans le fichier config_user_types.xml, tel que default-restrictions, remplace la valeur par défaut de l'AOSP. Tout attribut non spécifié obéit à la valeur par défaut de l'AOSP. La modification de la plupart des attributs, tels que les attributs de badge d'un type de profil, affecte les utilisateurs existants de ce type d'utilisateur.
Toutefois, comme les default-restrictions ne sont appliqués qu'au moment de la création d'un utilisateur, la modification de cet attribut particulier, dans le cas où le fichier config_user_types.xml est modifié par OTA, n'a aucun effet sur les utilisateurs préexistants. De même, la spécification du nombre maximal d'utilisateurs ne s'applique qu'à la création de nouveaux utilisateurs. Les utilisateurs existants ne sont pas supprimés.
Voici les restrictions de personnalisation actuelles pour chaque type d'utilisateur :
- Les profils peuvent être entièrement personnalisés et définis. Dans ce cas, l'OEM est responsable des modifications de plate-forme nécessaires pour que son profil personnalisé soit pris en charge dans Android, car AOSP ne prend en charge que les types d'utilisateurs AOSP prédéfinis.
- Les utilisateurs complets ne peuvent pas être définis. Seul leur attribut
default-restrictionspeut être personnalisé. - L'utilisateur système ne peut pas être personnalisé à l'aide de ce mécanisme. Dans ce cas,
default-restrictionspeut être défini à l'aide decom.android.internal.R.array.config_defaultFirstUserRestrictions. Pour en savoir plus, consultezconfig.xml.
Modifier les types d'utilisateurs existants
Les types d'utilisateurs existants peuvent être personnalisés en remplaçant leurs attributs, comme indiqué dans l'exemple de code suivant :
<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>
Dans cet exemple de code, les types d'utilisateurs AOSP suivants sont personnalisés en modifiant les propriétés acceptées :
Utilisateur avec accès complet
android.os.usertype.full.SECONDARY:- La restriction par défaut de
no_smsest définie sur "true" en spécifiantdefault-restrictions no_sms="true".
- La restriction par défaut de
Utilisateur du profil
android.os.usertype.profile.MANAGED:- Deux profils sont autorisés pour chaque parent en définissant
max-allowed-per-parent='2'. - Les attributs du badge sont définis sur les valeurs choisies à l'aide de
icon-badge,badge-plain,badge-no-background,badge-labels,badge-colors. - Les restrictions par défaut
no_smsetno_outgoing_callssont définies sur "true" en spécifiantdefault-restrictions no_sms="true" no_outgoing_calls="true".
- Deux profils sont autorisés pour chaque parent en définissant
Pour connaître la signification et les valeurs par défaut de ces propriétés, consultez UserTypeFactory.java et UserTypeDetails.java.
Définir des types de profils personnalisés
L'exemple de code suivant montre comment définir de nouveaux types de profils personnalisés :
<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>
Dans cet exemple de code, le type de profil com.example.profilename est défini comme suit :
max-allowed-per-parentsest défini sur2pour deux profils par parent.change-user-type: convertit tous les profils gérés existants de typeandroid.os.usertype.profile.MANAGEDau nouveau typecom.example.profilenamelors de la mise à niveau de l'appareil à partir d'une versionuser-typede<= 1via OTA.