Suporte a vários usuários

O Android oferece suporte a vários usuários em um único dispositivo Android separando as contas de usuário e os dados do app. Por exemplo, os pais podem permitir que as crianças usem o tablet da família, uma família pode compartilhar um automóvel ou uma equipe de resposta crítica pode compartilhar um dispositivo móvel para plantão.

Terminologia

O Android usa os termos a seguir ao descrever usuários e contas do Android.

Geral

O gerenciamento de dispositivos Android usa os seguintes termos gerais:

  • Usuário: cada usuário deve ser utilizado por uma entidade física diferente pessoa. Cada usuário tem dados de app distintos e algumas configurações exclusivas, como bem como uma interface do usuário para alternar explicitamente entre usuários. Um usuário pode executar em segundo plano quando outro usuário está ativo. o sistema gerencia o desligamento para economizar recursos quando apropriado. É possível criar usuários secundários seja diretamente por meio da interface do usuário ou de um Dispositivo Administration.
  • Conta: as contas estão contidas em um usuário, mas não são definidas. por um usuário, nem um usuário é definido ou vinculado a uma determinada conta. Os usuários e perfis contêm contas exclusivas, mas não precisam ter contas para funcionar. A lista de contas varia de acordo com o usuário. Para mais detalhes, consulte o Conta classe.
  • Perfil:um perfil tem dados separados de apps, mas compartilha alguns. configurações gerais do sistema (por exemplo, Wi-Fi e Bluetooth). Um perfil é um subconjunto e vinculado à existência de um usuário. Um usuário pode ter vários perfis. Os perfis são criados por uma Dispositivo Administration. Um perfil sempre tem uma associação imutável a um usuário pai, definido pelo usuário que criou o perfil. Os perfis não existem além da vida útil do usuário que os criou.
  • App:os dados de um app existem dentro de cada usuário associado. Os dados de outros apps são colocados no sandbox do mesmo usuário. Aplicativos do mesmo usuário podem interagir entre si via IPC. Para mais detalhes, consulte para o Android para empresas.

Categorias de usuários

A administração de dispositivos Android usa as seguintes categorias de usuários.

  • Usuário do sistema:primeiro usuário adicionado a um dispositivo. O usuário do sistema não pode ser removido, exceto pela redefinição para a configuração original, e está sempre em execução, mesmo quando outros usuários estão em primeiro plano. Este usuário também tem privilégios especiais e que só ele pode definir.
  • Usuário do sistema sem cabeça: o primeiro usuário adicionado a um dispositivo, se ele estiver configurado para executar no modo de usuário do sistema sem cabeça (configurando ro.fw.mu.headless_system_user=true). O usuário do sistema sem cabeça sempre é executado em segundo plano. Portanto, esses dispositivos exigem usuários em primeiro plano adicionais para permitir a interação do usuário.
  • Usuário secundário:qualquer usuário adicionado ao dispositivo, exceto o sistema usuário. Os usuários secundários podem ser removidos (por si mesmos ou por um usuário administrador) e não podem afetar outros usuários em um dispositivo. Esses usuários podem executar segundo plano e continuar a ter conectividade de rede.
  • Usuário convidado:usuário secundário temporário. Os usuários visitantes têm uma opção explícita para excluir rapidamente o usuário visitante quando ele não for mais útil. Só é possível ter um usuário convidado por vez.
  • Usuário administrador: um usuário que tem permissão para criar e remover outros usuários, além de controlar algumas configurações gerais para vários usuários. Por padrão, apenas o usuário do sistema é administrador.

Categorias de perfis

O Android usa as seguintes categorias de perfis:

  • Perfil gerenciado: criado por um app para conter dados e apps de trabalho. Eles são gerenciados exclusivamente pelo proprietário do perfil, o aplicativo que criou o perfil corporativo). A tela de início, as notificações e as tarefas recentes são compartilhadas pelo usuário principal e pelo perfil corporativo.
  • Perfil restrito:usa contas com base no usuário pai, que pode controlar quais apps ficam disponíveis no perfil restrito. Disponível apenas em tablets e dispositivos de TV.
  • Perfil clone: o Android oferece suporte à criação de um tipo de usuário de perfil clone separado para permitir a execução de duas instâncias de um único app no dispositivo. O AOSP não oferece suporte completo para o recurso. Os OEMs precisam adicionar personalizações para oferecer a versão para usuários do Android.
  • Perfil particular:é um espaço em sandbox separado do restante do dispositivo, que podem ser bloqueadas separadamente do usuário principal. Um perfil particular só pode existir para usuário principal. Quando o perfil particular está desbloqueado, os apps ficam visíveis nas configurações, no ShareSheet, no seletor de fotos e na interface dos Documentos, mas ficam ocultos quando bloqueados. O perfil particular pode existir no mesmo dispositivo com o perfil de trabalho e o perfil clone.

Tipos de usuários

O Android 11 formou a classificação de usuários e perfis acima em tabelas bem definidas tipos de usuário que representam todos os diferentes tipos de usuários e perfis permitidos pelo ambiente multiusuário do Android .

Os tipos de usuário predefinidos do AOSP são definidos em frameworks/base/core/java/android/os/UserManager.java e atualmente incluem:

  • 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

Os OEMs podem configurar esses tipos de usuários sobrepondo o arquivo frameworks/base/core/res/res/xml/config_user_types.xml. Isso facilita a mudança da configuração padrão de cada tipo de usuário, incluindo restrições, ícones, selos e o número máximo de usuários permitidos.

Além dos tipos de usuário configuráveis do AOSP, os OEMs podem definir novos tipos de perfil usando as frameworks/base/core/res/res/xml/config_user_types.xml. Isso permite que os OEMs apresentem os próprios tipos de perfil não gerenciados, se desejarem. No entanto, é responsabilidade do OEM fazer as modificações necessárias na plataforma para oferecer suporte às mudanças, incluindo a modificação de qualquer código que verifique perfis gerenciados para processar o novo tipo de perfil, se apropriado.

Ativar o recurso multiusuário

O recurso multiusuário fica desativado por padrão. Para ativar o recurso, os fabricantes de dispositivos precisam definir uma sobreposição de recursos que substitua os seguintes valores em 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 essa sobreposição e ativar usuários visitantes e secundários no dispositivo, use o recurso DEVICE_PACKAGE_OVERLAYS do sistema de build do Android para substituir os valores de:

  • config_multiuserMaximumUsers com um valor maior que 1
  • config_enableMultiUserUI com true

Os fabricantes de dispositivos podem decidir o número máximo de usuários. Se o dispositivo fabricantes ou outros modificaram configurações, eles devem garantir que o envio de SMS e de telefonia, conforme definido nos Compatibilidade do Android Documento de definição de terceiros (CDD, na sigla em inglês).

Gerenciar vários usuários

Gerenciamento de usuários e perfis (exceto perfis restritos) é realizada por aplicativos que invocam a API de forma programática no DevicePolicyManager para restringir o uso.

As empresas podem empregar usuários e perfis para gerenciar a vida útil e o escopo de apps e dados em dispositivos, usando os tipos descritos acima em conjunto com as APIs DevicePolicyManager e UserManager para criar soluções exclusivas adaptadas aos casos de uso.

Comportamento do sistema multiusuário

Quando os usuários são adicionados a um dispositivo, algumas funcionalidades são limitadas quando outro usuário está em primeiro plano. Como os dados do app são separados por usuário, a o estado desses apps varia de acordo com o usuário. Por exemplo, o e-mail destinado a uma conta de um usuário que não está em foco não vai estar disponível até que o usuário e a conta estejam ativos no dispositivo.

Observação: para ativar ou desativar o telefone e o SMS para um usuário secundário, vá para Configurações > Usuários, selecione o Desative a configuração Permitir chamadas telefônicas e SMS.

Algumas restrições existem quando um usuário secundário está em segundo plano. Por exemplo, o usuário secundário em segundo plano não pode mostrar a interface do usuário nem ativar os serviços de Bluetooth. Além disso, o processo do sistema interrompe os usuários secundários em segundo plano se o dispositivo precisar de mais memória para operações no usuário em primeiro plano.

Ao empregar vários usuários em um dispositivo Android, considere o seguinte: do seu comportamento em mente:

  • As notificações aparecem para todas as contas de um único usuário de uma só vez.
  • As notificações para outros usuários só aparecem quando ativadas.
  • Cada usuário tem um espaço de trabalho para instalar e posicionar apps.
  • Nenhum usuário tem acesso aos dados do app de outro usuário.
  • Qualquer usuário pode afetar os apps instalados para todos os usuários.
  • Um usuário administrador pode remover apps ou até mesmo todo o espaço de trabalho estabelecido por usuários secundários.
  • Por padrão, as informações de uma sessão de usuário visitante não são mantidas ao sair do modo visitante. Se você quiser que as informações de uma sessão de usuário visitante sejam mantidas, crie um arquivo de sobreposição de recursos que defina o config_guestUserAllowEphemeralStateChange como false. Para mais informações sobre como criar arquivos de sobreposição, consulte Personalizar o build com sobreposições de recursos.

Android Automotive multiusuário

O Android Automotive depende da implementação multiusuário do Android para fornecer um dispositivo compartilhado do usuário.

Tipos de usuários automotivos

Além dos tipos de usuários listados acima, os builds automotivos são notáveis para estes tipos de usuários:

  • Usuário do sistema headless. O usuário do sistema hospeda todos os serviços do sistema. Para oferecer suporte a vários usuários no Automotive, o usuário do sistema também precisa estar headless. Há apenas um usuário sem cabeça. Um usuário de sistema headless:
    • Precisam ser executados sempre em segundo plano.
    • Não podem ser removidos ou acessados diretamente pelo usuário, exceto no caso de provisionamento do dispositivo. Por exemplo, os usuários não podem mudar para esse tipo de usuário para realizar tarefas como fazer o download de apps ou adicionar contas.
    • Só podem ser apagados com uma redefinição para a configuração original.
  • Usuários comuns. O mesmo que Usuários secundários, descrito acima, exceto que os usuários secundários:
    • Não é executado em segundo plano (depois de ter sido desativado).
    • Podem ser criadas diretamente usando a interface do usuário.
    • ter dados separados do app, mas compartilhar algumas configurações do sistema; Por exemplo, Wi-Fi e Bluetooth

Avisos

As exceções a seguir se aplicam a usuários do sistema headless e usuários normais (secundários) em Automóveis:

  • O usuário do sistema headless não oferece suporte a perfis de trabalho.
  • Por padrão, os usuários comuns (secundários) têm acesso total a chamadas telefônicas e mensagens de texto.
  • Por padrão, os usuários comuns (secundários) não são executados em segundo plano.

Ativar o usuário do sistema sem cabeça

A partir do Android 10, o recurso multiusuário pode ser usado para casos de uso automotivos. As distinções importantes incluem:

  • O usuário do sistema é sem cabeça e é executado apenas em segundo plano.
  • Usuários humanos não interagem com o usuário do sistema.

Para habilitar o usuário do sistema headless, os fabricantes dos dispositivos precisam habilitar o multiusuário, conforme descrito acima.

Quando o usuário sem cabeça estiver ativado:
  1. Para declarar que o dispositivo é automotivo, adicione o recurso android.hardware.type.automotive.
  2. Defina ro.fw.headless_system_user como true.
  3. Defina o valor de config_multiuserMaximumUsers como 2 (ou superior).

Para mais informações, consulte Suporte multiusuário na área automotiva.

Android Automotive multiusuário em várias telas

Um novo recurso experimental no Android 14 permite que usuários secundários completos (que não são o usuário atual em primeiro plano) para iniciar atividades e obter acesso à interface na tela à qual estão atribuídos. Esse recurso permite que várias usuários simultâneos no Android Automotive OS para oferecer suporte a experiências no carro que oferecem várias os passageiros com uma experiência de interface dedicada em uma única instância do Android.

Para ativar esse recurso para uso em desenvolvimento, os fabricantes dos dispositivos precisam definir uma sobreposição de recursos para substituir o seguinte valor no frameworks/base/core/res/res/values/config.xml:

<!-- Whether the device allows users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

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

Para experimentar uma experiência somente para passageiros (sem motorista), ative a seguinte configuração:

<!-- 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>

No Android 14, é possível ativar a experiência no carro para vários passageiros como usuários convidados. Para permitir vários usuários convidados para uso de desenvolvimento, os fabricantes de dispositivos precisam definir uma sobreposição de recursos que configure o número máximo permitido de usuários convidados em frameworks/base/core/res/res/xml/config_user_types.xml, como no exemplo abaixo:

<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>