Android 11 ha introducido el concepto de tipos de usuarios bien definidos, que representan todos los diferentes tipos de usuarios permitidos por la función multiusuario de Android. Con esta función, los OEM pueden personalizar tipos de usuarios AOSP predefinidos y definir nuevos tipos de perfiles. Consulte la sección sobre tipos de usuarios para obtener más información.
Esta página detalla las pautas de implementación necesarias para personalizar los tipos de usuarios.
Personalización
Para personalizar los tipos de usuarios de AOSP y definir nuevos tipos de perfiles, 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 especifica en el archivo config_user_types.xml
, sobrescribe el valor predeterminado de AOSP. Cualquier atributo que no esté especificado obedece al valor predeterminado 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 aplican en el momento en que se crea un usuario, modificar este atributo en particular, en caso de que OTA cambie el archivo config_user_types.xml
, no tiene ningún efecto en los usuarios preexistentes. De manera similar, especificar el número máximo de usuarios solo aplica al crear nuevos usuarios; los usuarios existentes no se eliminan.
Las restricciones de personalización actuales para cada tipo de usuario son las siguientes:
- Los perfiles se pueden personalizar y definir completamente. En este caso, el OEM es responsable de realizar las modificaciones de plataforma necesarias para que su perfil personalizado sea compatible con Android, ya que AOSP solo admite los tipos de usuarios de AOSP predefinidos.
- No se pueden definir usuarios completos y solo se puede personalizar su atributo
default-restrictions
. - El usuario del sistema no se puede personalizar mediante este mecanismo. En este caso,
default-restrictions
se pueden configurar usandocom.android.internal.R.array.config_defaultFirstUserRestrictions
. Consulteconfig.xml
para obtener más información.
Modificar tipos de usuarios existentes
Los tipos de usuarios existentes se pueden personalizar anulando sus atributos como se muestra en el siguiente ejemplo 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 este ejemplo de código, los siguientes tipos de usuarios de AOSP se personalizan modificando las propiedades admitidas.
Usuario completo
android.os.usertype.full.SECONDARY
:- La restricción predeterminada de
no_sms
se establece en verdadero especificandodefault-restrictions no_sms="true"
.
- La restricción predeterminada de
Perfil de usuario
android.os.usertype.profile.MANAGED
:- Se permiten dos perfiles para cada usuario principal configurando
max-allowed-per-parent='2'
. - Los atributos de la insignia se configuran con los valores deseados usando
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Las restricciones predeterminadas de
no_sms
yno_outgoing_calls
se establecen en verdadero especificandodefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Se permiten dos perfiles para cada usuario principal configurando
Consulte UserTypeFactory.java
y UserTypeDetails.java
para conocer el significado y los valores predeterminados de estas propiedades.
Definir tipos de perfiles personalizados
El siguiente ejemplo de código muestra cómo se definen los nuevos tipos de perfiles 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 este ejemplo de código, el tipo de perfil com.example.profilename
se define de la siguiente manera:
max-allowed-per-parents
se establece en2
para dos perfiles por usuario principal.change-user-type
: convierte todos los perfiles administrados existentes del tipoandroid.os.usertype.profile.MANAGED
al nuevo tipocom.example.profilename
al actualizar el dispositivo desde una versión deuser-type
<= 1
a través de OTA.