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 nuevos tipos de perfiles, el OEM debe superponer config_user_types.xml con las personalizaciones preferidas. 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 anula el valor predeterminado del AOSP. Cualquier atributo que no se especifique obedecerá el valor predeterminado del AOSP. Cambiar la mayoría de los atributos, como los atributos de insignia de un tipo de perfil, afecta a los usuarios existentes de ese tipo de usuario.
Sin embargo, como los default-restrictions solo se aplican en el momento en que se crea un usuario, modificar este atributo en particular, en caso de que la OTA cambie el archivo default-restrictions, no tiene ningún efecto en los usuarios existentes.config_user_types.xml 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 por completo. En este caso, el OEM es responsable de realizar las modificaciones de la plataforma necesarias para que se admita su perfil personalizado en 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 con este mecanismo. En este caso,
default-restrictionsse puede configurar concom.android.internal.R.array.config_defaultFirstUserRestrictions. Consultaconfig.xmlpara obtener más información.
Cómo modificar tipos de usuarios existentes
Los tipos de usuarios existentes se pueden personalizar anulando sus atributos, como se muestra 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 este ejemplo de código, se personalizan los siguientes tipos de usuarios del AOSP modificando las propiedades admitidas:
Usuario con permisos completos
android.os.usertype.full.SECONDARY:- La restricción predeterminada de
no_smsse establece en verdadero especificandodefault-restrictions no_sms="true".
- La restricción predeterminada de
Usuario del perfil
android.os.usertype.profile.MANAGED:- Se permiten dos perfiles para cada usuario principal configurando
max-allowed-per-parent='2'. - Los atributos de distintivo se establecen en los valores elegidos con
icon-badge,badge-plain,badge-no-background,badge-labelsybadge-colors. - Las restricciones predeterminadas de
no_smsyno_outgoing_callsse establecen en verdadero especificandodefault-restrictions no_sms="true" no_outgoing_calls="true".
- Se permiten dos perfiles para cada usuario principal configurando
Consulta UserTypeFactory.java y UserTypeDetails.java para conocer el significado y los valores predeterminados de estas propiedades.
Cómo definir tipos de perfil personalizados
En el siguiente ejemplo de código, se muestra cómo se definen los tipos de perfil personalizados nuevos:
<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-parentsse establece en2para dos perfiles por usuario principal.change-user-type: Convierte todos los perfiles administrados existentes del tipoandroid.os.usertype.profile.MANAGEDal nuevo tipocom.example.profilenamecuando se actualiza el dispositivo de una versiónuser-typede<= 1a través de OTA.