Admitir varios usuarios

Android admite varios usuarios en un solo dispositivo Android, ya que separa las cuentas de usuario y los datos de la app. Por ejemplo, los padres pueden permitir que sus hijos usen la tablet familiar, una familia puede compartir un automóvil o un equipo de respuesta crítica puede compartir un dispositivo móvil para el servicio de guardia.

Terminología

Android usa los siguientes términos cuando describe a los usuarios y las cuentas de Android.

General

La administración de dispositivos Android usa los siguientes términos generales:

  • Usuario: Cada usuario está diseñado para que lo use una persona física diferente. Cada usuario tiene datos de apps y parámetros de configuración únicos, así como una interfaz de usuario para cambiar de usuario de forma explícita. Un usuario puede ejecutarse en segundo plano cuando otro usuario está activo. El sistema administra el cierre de los usuarios para conservar recursos cuando corresponda. Los usuarios secundarios se pueden crear directamente a través de la interfaz de usuario o desde una app de Administración de dispositivos.
  • Cuenta: Las cuentas se contienen en un usuario, pero no las define un usuario, ni un usuario está definido por una cuenta determinada ni está vinculado a ella. Los usuarios y los perfiles contienen sus propias cuentas únicas, pero no es necesario que tengan cuentas para que sean funcionales. La lista de cuentas difiere según el usuario. Para obtener más información, consulta la definición de clase de cuenta.
  • Perfil: Un perfil tiene datos de apps separados, pero comparte algunos parámetros de configuración del sistema (por ejemplo, Wi-Fi y Bluetooth). Un perfil es un subconjunto de la existencia de un usuario y está vinculado a él. Un usuario puede tener varios perfiles. Los perfiles se crean a través de una app de Administración de dispositivos. Un perfil siempre tiene una asociación inmutable con un usuario superior, definido por el usuario que creó el perfil. Los perfiles no existen más allá del ciclo de vida del usuario que los creó.
  • App: Los datos de una app existen dentro de cada usuario asociado. Los datos de la app se separan de otras apps del mismo usuario. Las apps del mismo usuario pueden interactuar entre sí a través de IPC. Para obtener más información, consulta Android para empresas.

Categorías de usuarios

La administración de dispositivos Android usa las siguientes categorías de usuarios.

  • Usuario del sistema: Es el primer usuario que se agrega a un dispositivo. El usuario del sistema no se puede quitar, excepto mediante el restablecimiento de la configuración de fábrica, y siempre se ejecuta, incluso cuando otros usuarios están en primer plano. Este usuario también tiene privilegios especiales y configuraciones que solo él puede establecer.
  • Usuario del sistema sin cabeza: Es el primer usuario que se agrega a un dispositivo si este está configurado para ejecutarse en el modo de usuario del sistema sin cabeza (configurando ro.fw.mu.headless_system_user=true). El usuario del sistema sin cabeza siempre se ejecuta en segundo plano, por lo que estos dispositivos requieren usuarios adicionales en primer plano para habilitar la interacción del usuario.
  • Usuario secundario: Es cualquier usuario que se agrega al dispositivo, excepto el usuario del sistema. Los usuarios secundarios se pueden quitar (por ellos mismos o por un usuario administrador) y no pueden afectar a otros usuarios en un dispositivo. Estos usuarios pueden ejecutarse en segundo plano y seguir teniendo conectividad de red.
  • Usuario invitado: Es un usuario secundario temporal. Los usuarios invitados tienen una opción explícita para borrarlos rápidamente cuando ya no sean útiles. Solo puede haber un usuario invitado a la vez.
  • Usuario administrador: Es un usuario que tiene permiso para crear y quitar otros usuarios, así como controlar algunos parámetros de configuración generales de varios usuarios. De forma predeterminada, solo el usuario del sistema es administrador.

Categorías de perfiles

Android usa las siguientes categorías de perfiles:

  • Perfil administrado: Es creado por una app para contener datos y apps del trabajo. El propietario del perfil (la app que creó el perfil de la empresa) es el único que los administra. El usuario superior y el perfil de la empresa comparten el selector, las notificaciones y las tareas recientes.
  • Perfil restringido: Usa cuentas basadas en el usuario superior, que puede controlar qué apps están disponibles en el perfil restringido. Solo está disponible en tablets y dispositivos de TV.
  • Perfil clonado: Android admite la creación de un tipo de usuario de perfil clonado independiente para permitir la ejecución de dos instancias de una sola app en el dispositivo. AOSP no proporciona asistencia de extremo a extremo para la función. Los OEMs deben agregar personalizaciones para entregar la función completa a los usuarios de Android.
  • Perfil privado: Es un espacio de zona de pruebas independiente del resto del dispositivo, que se puede bloquear de forma independiente del usuario principal. Un perfil privado solo puede existir para el usuario principal. Cuando el perfil privado está desbloqueado, las apps se vuelven visibles en la configuración, ShareSheet, Photopicker y DocsUI, pero se ocultan cuando están bloqueadas. El perfil privado puede existir en el mismo dispositivo junto con el perfil de trabajo y el perfil clonado.

Tipos de usuarios

Android 11 formuló la clasificación anterior de usuarios y perfiles en tipos de usuarios bien definidos, que representan todos los diferentes tipos de usuarios y perfiles que permite la función Multiusuario de Android.

Los tipos de usuarios predefinidos de AOSP se definen en frameworks/base/core/java/android/os/UserManager.java y, actualmente, incluyen lo siguiente:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS
  • android.os.usertype.profile.CLONE
  • android.os.usertype.profile.PRIVATE

Los OEMs pueden superponer el archivo frameworks/base/core/res/res/xml/config_user_types.xml para configurar estos tipos de usuarios. Esto facilita el cambio de la configuración predeterminada para cada tipo de usuario, incluidos sus restricciones predeterminadas, íconos, insignias y la cantidad máxima de usuarios permitida.

Además de los tipos de usuarios configurables de AOSP, los OEMs pueden definir nuevos tipos de perfiles con el archivo frameworks/base/core/res/res/xml/config_user_types.xml. Esto permite que los OEMs presenten sus propios tipos de perfiles no administrados si lo desean. Sin embargo, es responsabilidad del OEM realizar las modificaciones de la plataforma según sea necesario para admitir los cambios, lo que incluye modificar cualquier código que busque perfiles administrados para que ahora controle el nuevo tipo de perfil si corresponde.

Habilita la función multiusuario

La función de varios usuarios está inhabilitada de forma predeterminada. Para habilitar la función, los fabricantes de dispositivos deben definir una superposición de recursos que reemplace los siguientes valores en frameworks/base/core/res/res/values/config.xml:

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

Para aplicar esta superposición y habilitar usuarios invitados y secundarios en el dispositivo, usa la función DEVICE_PACKAGE_OVERLAYS del sistema de compilación de Android para reemplazar los valores de los siguientes elementos:

  • config_multiuserMaximumUsers con un valor superior a 1
  • config_enableMultiUserUI con true

Los fabricantes de dispositivos pueden decidir la cantidad máxima de usuarios. Si los fabricantes de dispositivos o cualquier otra persona modificaron la configuración, deben asegurarse de que los SMS y la telefonía funcionen como se define en el Documento de definición de compatibilidad de Android (CDD).

Cómo administrar varios usuarios

Las apps que invocan de forma programática la API en la clase DevicePolicyManager para restringir el uso realizan la administración de usuarios y perfiles (con la excepción de los perfiles restringidos).

Las empresas pueden emplear usuarios y perfiles para administrar la vida útil y el alcance de las apps y los datos en los dispositivos. Para ello, deben usar los tipos descritos anteriormente junto con las APIs de DevicePolicyManager y UserManager para crear soluciones únicas adaptadas a sus casos de uso.

Comportamiento del sistema multiusuario

Cuando se agregan usuarios a un dispositivo, se restringen algunas funciones cuando otro usuario está en primer plano. Dado que los datos de la app se separan por usuario, el estado de esas apps difiere según el usuario. Por ejemplo, los correos electrónicos destinados a una cuenta de un usuario que no está en foco no estarán disponibles hasta que ese usuario y la cuenta estén activos en el dispositivo.

Nota: Para habilitar o inhabilitar las funciones de teléfono y SMS de un usuario secundario, ve a Configuración > Usuarios, selecciona el usuario y desactiva la opción Permitir llamadas telefónicas y SMS.

Existen algunas restricciones cuando un usuario secundario está en segundo plano. Por ejemplo, el usuario secundario en segundo plano no puede mostrar la interfaz de usuario ni activar los servicios de Bluetooth. Además, el proceso del sistema detiene a los usuarios secundarios en segundo plano si el dispositivo necesita memoria adicional para las operaciones en el usuario en primer plano.

Cuando uses varios usuarios en un dispositivo Android, ten en cuenta el siguiente comportamiento:

  • Las notificaciones aparecen para todas las cuentas de un solo usuario a la vez.
  • Las notificaciones para otros usuarios no aparecen hasta que están activas.
  • Cada usuario obtiene un espacio de trabajo para instalar y colocar apps.
  • Ningún usuario tiene acceso a los datos de la app de otro usuario.
  • Cualquier usuario puede afectar las apps instaladas de todos los usuarios.
  • Un usuario administrador puede quitar apps o incluso todo el espacio de trabajo que establecieron los usuarios secundarios.
  • De forma predeterminada, la información de una sesión de usuario invitado no persiste cuando se sale del modo de invitado. Si deseas que la información de una sesión de usuario invitado persista, debes crear un archivo de superposición de recursos que establezca config_guestUserAllowEphemeralStateChange en false. Para obtener más información sobre cómo crear archivos de superposición, consulta Cómo personalizar la compilación con superposiciones de recursos.

Multiusuario de Android Automotive

Android Automotive se basa en la implementación multiusuario de Android para proporcionar una experiencia de dispositivo compartido.

Tipos de usuarios de la industria automotriz

Además de los tipos de usuarios mencionados anteriormente, las compilaciones de Automotive se distinguen por estos tipos de usuarios:

  • Usuario del sistema sin interfaz gráfica. El usuario del sistema aloja todos los servicios del sistema. Para admitir varios usuarios en Automotive, el usuario del sistema también debe ser sin interfaz gráfica. Solo hay un usuario sin cabeza. Un usuario de sistema sin interfaz gráfica:
    • Siempre debe ejecutarse en segundo plano.
    • El usuario no puede quitarlos ni acceder a ellos directamente, excepto en el caso del aprovisionamiento de dispositivos. Por ejemplo, los usuarios no pueden cambiar a este tipo de usuario para realizar tareas como descargar apps o agregar cuentas.
    • Solo se puede borrar restableciendo la configuración de fábrica.
  • Usuarios normales. Es lo mismo que los usuarios secundarios, como se describió anteriormente, excepto que los usuarios secundarios tienen las siguientes características:
    • No se ejecuta en segundo plano (después de haberse cambiado).
    • Se pueden crear directamente a través de la interfaz de usuario.
    • Tener datos de apps separados, pero compartir algunos parámetros de configuración del sistema Por ejemplo, Wi-Fi y Bluetooth.

Advertencias

Se aplican las siguientes excepciones al usuario del sistema sin cabeza y a los usuarios normales (secundarios) en la industria automotriz:

  • El usuario del sistema sin interfaz gráfica no admite perfiles de trabajo.
  • De forma predeterminada, los usuarios normales (secundarios) tienen acceso completo a las llamadas telefónicas y los mensajes de texto.
  • De forma predeterminada, los usuarios normales (secundarios) no se ejecutan en segundo plano.

Habilita el usuario del sistema sin interfaz gráfica

A partir de Android 10, la función multiusuario se puede usar para casos de uso de la industria automotriz. Entre las distinciones importantes, se incluyen las siguientes:

  • El usuario del sistema no tiene pantalla y se ejecuta solo en segundo plano.
  • Los usuarios humanos no interactúan con el usuario del sistema.

Para habilitar el usuario del sistema sin cabeza, los fabricantes de dispositivos deben habilitar el modo multiusuario como se describió anteriormente.

Cuando el usuario sin cabeza está habilitado, ocurre lo siguiente:
  1. Para declarar que el dispositivo es Automotive, agrega la función android.hardware.type.automotive.
  2. Establece ro.fw.headless_system_user en true.
  3. Establece el valor de config_multiuserMaximumUsers en 2 (o un valor superior).

Para obtener más información, consulta Compatibilidad con varios usuarios en Automotive.

Multiusuario en varias pantallas en Android Automotive

Android 15 permite que los usuarios secundarios completos (que no son el usuario en primer plano actual) inicien actividades y obtengan acceso a la IU en la pantalla a la que están asignados. Esta función permite que varios usuarios simultáneos en el SO Android Automotive admitan experiencias en el vehículo que proporcionen a varios pasajeros una experiencia de IU dedicada en una sola instancia de Android.

Para habilitar esta función, los fabricantes de dispositivos deben definir una superposición de recursos para reemplazar el siguiente valor en frameworks/base/core/res/res/values/config.xml:

<!-- Whether the device allows full users to start in background visible on displays.
Should be false for most devices, except automotive vehicle with passenger displays.
Note: this flag does NOT control the Communal Profile, which is not a full user. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

Para experimentar con una experiencia solo para pasajeros (sin conductor), habilita la siguiente configuración adicional:

<!-- Whether the device allows users to start in background visible on the default display.
    Should be false for all devices in production. Can be enabled only for development use
    in passenger-only automotive build (i.e., when Android runs in a separate system in the
    back seat to manage the passenger displays).
    When set to true, config_multiuserVisibleBackgroundUsers must also be true. -->

<bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>

En Android 15, también puedes habilitar la experiencia en el vehículo para varios pasajeros como usuarios invitados. Para habilitar varios usuarios invitados para el uso de desarrollo, los fabricantes de dispositivos deben definir una superposición de recursos que configure la cantidad máxima permitida de usuarios invitados en frameworks/base/core/res/res/xml/config_user_types.xml, como en este ejemplo:

<user-types>
   <full-type
       name="android.os.usertype.full.GUEST"
       max-allowed='4'>
       <default-restrictions no_factory_reset="true"
           no_remove_user="true"
           no_modify_accounts="true"
           no_install_apps="true"
           no_install_unknown_sources="true"
           no_uninstall_apps="true"/>
   </full-type>
</user-types>