Android 11 introdujo el concepto de tipos de usuarios bien definidos, que representa todos los diferentes tipos de usuarios que permite la función Multiusuario de Android. Con esta función, los OEM pueden personalizar los tipos predefinidos de usuarios de AOSP y establecer nuevos tipos de perfiles. Consulta la sección sobre tipos de usuario para obtener más información.
En esta página, se detallan los lineamientos de implementación necesarios para personalizar los tipos de usuarios.
Personalización
Para personalizar los tipos de usuarios de AOSP y definir tipos de perfiles nuevos, el OEM debe superponer config_user_types.xml
con las personalizaciones deseadas. El archivo config_user_types.xml
contiene una implementación de referencia y una lista completa de atributos configurables.
Cualquier atributo, como default-restrictions
, que se especifique en el archivo config_user_types.xml
, reemplaza el valor predeterminado de AOSP. Cualquier atributo que no se especifique obedece la configuración predeterminada de AOSP. Cambiar la mayoría de los atributos, como los atributos de insignia de un tipo de perfil, afecta a los usuarios preexistentes de ese tipo de usuario.
Sin embargo, debido a que default-restrictions
solo se aplica en el momento en que se crea un usuario, la modificación de este atributo en particular, en caso de que se cambie el archivo config_user_types.xml
de manera inalámbrica, no tendrá efecto en los usuarios preexistentes. Del mismo modo, especificar la cantidad máxima de usuarios solo se aplica cuando se crean usuarios nuevos. Los usuarios existentes no se quitan.
Las restricciones de personalización actuales para cada tipo de usuario son las siguientes:
- Los perfiles se pueden personalizar y definir en su totalidad. En este caso, el OEM es responsable de realizar las modificaciones en la plataforma necesarias para que su perfil personalizado sea compatible con Android, ya que AOSP solo admite los tipos de usuario predefinidos de AOSP.
- No se pueden definir usuarios con permisos completos y solo se puede personalizar su atributo
default-restrictions
. - El usuario del sistema no se puede personalizar con este mecanismo. En este caso,
default-restrictions
se puede configurar concom.android.internal.R.array.config_defaultFirstUserRestrictions
. Consultaconfig.xml
para obtener más información.
Modifica los tipos de usuarios existentes
Los tipos de usuarios existentes se pueden personalizar mediante la anulación de sus atributos, como se indica en la siguiente muestra de código.
<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>
En esta muestra de código, se modifican las propiedades compatibles para personalizar los siguientes tipos de usuarios del AOSP.
Usuario con permisos completos
android.os.usertype.full.SECONDARY
:- Para establecer la restricción predeterminada de
no_sms
como verdadera, se especificadefault-restrictions no_sms="true"
.
- Para establecer la restricción predeterminada de
Usuario del perfil
android.os.usertype.profile.MANAGED
:- Si configuras
max-allowed-per-parent='2'
, se permiten dos perfiles para cada usuario superior. - Los atributos de la insignia se configuran con los valores deseados mediante
icon-badge
,badge-plain
,badge-no-background
,badge-labels
ybadge-colors
. - Las restricciones predeterminadas de
no_sms
yno_outgoing_calls
se configuran como verdaderas a través de la especificación dedefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Si configuras
Consulta UserTypeFactory.java
y UserTypeDetails.java
para conocer el significado y los valores predeterminados de estas propiedades.
Cómo definir tipos de perfiles personalizados
En la siguiente muestra de código, se indica cómo se definen los nuevos tipos de perfil personalizados.
<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>
En esta muestra de código, el tipo de perfil com.example.profilename
se define de la siguiente manera:
max-allowed-per-parents
se configura como2
para dos perfiles por usuario superior.change-user-type
: Convierte todos los perfiles administrados existentes del tipoandroid.os.usertype.profile.MANAGED
al nuevo tipo decom.example.profilename
cuando se actualiza el dispositivo de una versiónuser-type
de<= 1
a inalámbrica.