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 para descrever usuários e contas do Android.
Geral
O gerenciamento de dispositivos Android usa os seguintes termos gerais:
- Usuário:cada usuário é destinado a ser usado por uma pessoa física diferente. Cada usuário tem dados de apps e algumas configurações exclusivas, além de uma interface para alternar explicitamente entre usuários. Um usuário pode ser executado em segundo plano quando outro usuário está ativo. O sistema gerencia o desligamento de usuários para conservar recursos quando apropriado. Os usuários secundários podem ser criados diretamente pela interface do usuário ou em um app de administração de dispositivos.
- 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 qualquer 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 saber mais, consulte a definição da classe Account.
- Perfil:um perfil tem dados de apps separados, mas compartilha algumas configurações do sistema (por exemplo, Wi-Fi e Bluetooth). Um perfil é um subconjunto e está vinculado à existência de um usuário. Um usuário pode ter vários perfis. Os perfis são criados usando um app de administração de dispositivos. Um perfil sempre tem uma associação imutável a um usuário pai, definida 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 em cada usuário associado. Os dados do app são isolados de outros apps do mesmo usuário. Os apps do mesmo usuário podem interagir entre si por IPC. Para mais detalhes, consulte Android para empresas.
Categorias de usuários
A administração de dispositivos Android usa as seguintes categorias de usuários.
- Usuário do sistema:o 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. Esse usuário também tem privilégios especiais e configurações 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 ser executado no modo de usuário do sistema sem cabeça (definindo
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 usuário do sistema. 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 ser executados em segundo plano e continuar com a 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 app que criou o perfil da empresa). 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 principal, que pode controlar quais apps estão 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 o recurso completo aos usuários do Android.
- Perfil privado:é um espaço isolado do resto do dispositivo, que pode ser bloqueado separadamente do usuário principal. Um perfil privado só pode existir para o 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 formulou a classificação acima de usuários e perfis em tipos de usuários bem definidos, representando todos os diferentes tipos de usuários e perfis permitidos pelo recurso 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 o
arquivo 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 quiserem.
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 que1
config_enableMultiUserUI
comtrue
Os fabricantes de dispositivos podem decidir o número máximo de usuários. Se os fabricantes de dispositivos ou outras pessoas modificarem as configurações, eles precisarão garantir que o SMS e a telefonia funcionem conforme definido no Documento de definição de compatibilidade do Android (CDD).
Gerenciar vários usuários
O gerenciamento de usuários e perfis (com exceção dos restritos)
é realizado por apps que invocam a API de forma programática na
classe 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, 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 as funções de telefone e SMS para um usuário secundário, acesse Configurações > Usuários, selecione o usuário e desative a configuração Permitir chamadas telefônicas e SMS.
Há algumas restrições 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, tenha o seguinte 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 não aparecem até que sejam 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
comofalse
. Para mais informações sobre como criar arquivos de sobreposição, consulte Personalizar o build com sobreposições de recursos.
Multiusuário do Android Automotive
O Android Automotive depende da implementação multiusuário do Android para oferecer uma experiência compartilhada do dispositivo.
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 sem cabeça. 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 ser headless.
Há apenas um usuário sem cabeça. Um usuário de sistema sem cabeça:
- Precisa ser executado em segundo plano.
- Não pode ser removido ou acessado 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ó pode ser excluído 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 criados diretamente pela interface do usuário.
- ter dados separados do app, mas compartilhar algumas configurações do sistema; Por exemplo, Wi-Fi e Bluetooth.
Avisos
As seguintes exceções se aplicam ao usuário do sistema sem cabeça e aos usuários normais (secundários) no Automotive:
- O usuário do sistema sem cabeça não oferece suporte a perfis de trabalho.
- Por padrão, os usuários regulares (secundários) têm acesso total a chamadas e mensagens de texto.
- Por padrão, os usuários regulares (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.
- Os usuários humanos não interagem com o usuário do sistema.
Para ativar o usuário do sistema sem cabeça, os fabricantes de dispositivos precisam ativar o acesso multiusuário, conforme descrito acima.
Quando o usuário sem cabeça estiver ativado:- Para declarar que o dispositivo é automotivo, adicione o recurso
android.hardware.type.automotive
. - Defina
ro.fw.headless_system_user
comotrue
. - Defina o valor de
config_multiuserMaximumUsers
como2
(ou superior).
Para mais informações, consulte Suporte para vários usuários no Automotive.
Android Automotive multiusuário em várias telas
O Android 15 permite que usuários secundários completos (que não são o usuário atual em primeiro plano) iniciem atividades e tenham acesso à IU na tela atribuída a eles. Esse recurso permite que vários usuários simultâneos no Android Automotive OS ofereçam suporte a experiências no carro que oferecem a vários passageiros uma experiência de IU dedicada em uma única instância do Android.
Para ativar esse recurso, os fabricantes de dispositivos precisam definir uma sobreposição de recurso
para substituir o seguinte valor em
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 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 15, também é 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 neste
exemplo:
<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>