Suporta vários usuários

O Android oferece suporte a vários usuários em um único dispositivo Android, separando contas de usuário e dados de aplicativos. Por exemplo, os pais podem permitir que seus filhos 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.

Em geral

O gerenciamento de dispositivos Android usa os seguintes termos gerais:

  • Usuário: Cada usuário se destina a ser usado por uma pessoa física diferente. Cada usuário possui dados de aplicativos distintos e algumas configurações exclusivas, bem como uma interface de usuário para alternar explicitamente entre os usuários. Um usuário pode ser executado em segundo plano quando outro usuário estiver 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 por um aplicativo 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 suas próprias contas exclusivas, mas não são obrigados a ter contas para funcionarem. A lista de contas varia de acordo com o usuário. Para obter detalhes, consulte a definição da classe Conta .
  • Perfil: um perfil separou dados de aplicativos, mas compartilha algumas configurações de todo o 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 por meio de um aplicativo de administração de dispositivos . Um perfil sempre possui 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 do tempo de vida do usuário criador.
  • Aplicativo: os dados de um aplicativo existem em cada usuário associado. Os dados do aplicativo são colocados em sandbox de outros aplicativos do mesmo usuário. Os aplicativos do mesmo usuário podem interagir entre si via IPC. Para obter 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: primeiro usuário adicionado a um dispositivo. O usuário do sistema não pode ser removido exceto por redefinição de fábrica e está sempre em execução mesmo quando outros usuários estão em primeiro plano. Este usuário também possui privilégios e configurações especiais que somente ele pode definir.
  • Usuário do sistema headless: primeiro usuário adicionado a um dispositivo se o dispositivo estiver configurado para funcionar no modo de usuário do sistema headless (definindo ro.fw.mu.headless_system_user=true ). O usuário do sistema headless sempre é executado em segundo plano, portanto, tais dispositivos exigem usuários adicionais em primeiro plano para permitir a interação do usuário.
  • Usuário secundário: Qualquer usuário adicionado ao dispositivo que não seja o usuário do sistema. Os usuários secundários podem ser removidos (por si próprios 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 a ter conectividade de rede.
  • Usuário convidado: usuário secundário temporário. Os usuários convidados têm uma opção explícita para excluir rapidamente o usuário convidado quando sua utilidade terminar. Só pode haver um usuário convidado por vez.
  • Usuário administrador: um usuário que tem permissão para criar e remover outros usuários, bem como controlar algumas configurações gerais de multiusuário. 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 aplicativo para conter dados de trabalho e aplicativos. Eles são gerenciados exclusivamente pelo proprietário do perfil (o aplicativo que criou o perfil corporativo). O iniciador, as notificações e as tarefas recentes são compartilhadas pelo usuário pai e pelo perfil corporativo.
  • Perfil restrito: usa contas baseadas no usuário pai, que pode controlar quais aplicativos estão disponíveis no perfil restrito. Disponível apenas em tablets e dispositivos de televisão.
  • Perfil clone: ​​o Android suporta a criação de um tipo de usuário de perfil clone separado para permitir a execução de duas instâncias de um único aplicativo no dispositivo. AOSP não fornece suporte completo para o recurso. Os OEMs precisam adicionar personalizações para fornecer o recurso completo aos usuários do Android.

Tipos de usuário

O Android 11 formulou a classificação de usuários e perfis acima em tipos de usuários bem definidos, representando todos os diferentes tipos de usuários e perfis permitidos pelo recurso Android Multiusuário.

Os tipos de usuários AOSP predefinidos 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

Os OEMs têm a capacidade de configurar esses tipos de usuário sobrepondo o arquivo frameworks/base/core/res/res/xml/config_user_types.xml . Isso facilita a alteração da configuração padrão para cada tipo de usuário, incluindo suas restrições padrão, ícones, emblemas e o número máximo permitido de usuários.

Além dos tipos de usuários AOSP configuráveis, 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 introduzam seus próprios tipos de perfis não gerenciados, se desejarem. No entanto, é responsabilidade do OEM fazer as modificações na plataforma conforme necessário para dar suporte às alterações, incluindo a modificação de qualquer código que verifique perfis gerenciados para agora lidar com o novo tipo de perfil, se apropriado.

Habilitando multiusuário

O recurso multiusuário está desabilitado por padrão. Para ativar o recurso, os fabricantes de dispositivos devem 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 convidados e secundários no dispositivo, use o recurso DEVICE_PACKAGE_OVERLAYS do sistema de compilação do Android para substituir os valores de:

  • config_multiuserMaximumUsers com valor maior que 1
  • config_enableMultiUserUI com true

Os fabricantes de dispositivos podem decidir sobre o número máximo de usuários. Se os fabricantes de dispositivos ou outros tiverem modificado as configurações, eles deverão garantir que o SMS e a telefonia funcionem conforme definido no Documento de definição de compatibilidade do Android (CDD).

Gerenciando vários usuários

O gerenciamento de usuários e perfis (com exceção de perfis restritos) é realizado por aplicativos que invocam programaticamente a API na classe DevicePolicyManager para restringir o uso.

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

Comportamento do sistema multiusuário

Quando 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 aplicativo são separados por usuário, o estado desses aplicativos varia de acordo com o usuário. Por exemplo, o e-mail destinado a uma conta de um usuário que não esteja em foco no momento não estará disponível até que esse usuário e essa conta estejam ativos no dispositivo.

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

Existem 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 exibir a interface do usuário ou ativar os serviços Bluetooth. Além disso, o processo do sistema interromperá os usuários secundários em segundo plano se o dispositivo precisar de memória adicional para operações no usuário em primeiro plano.

Ao empregar vários usuários em um dispositivo Android, lembre-se do seguinte comportamento:

  • 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é serem ativas.
  • Cada usuário obtém um espaço de trabalho para instalar e colocar aplicativos.
  • Nenhum usuário tem acesso aos dados do aplicativo de outro usuário.
  • Qualquer usuário pode afetar os aplicativos instalados para todos os usuários.
  • Um usuário administrador pode remover aplicativos 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 Convidado não persistem ao sair do modo Convidado. Se desejar que as informações de uma sessão de usuário Convidado persistam, você deverá criar um arquivo de sobreposição de recurso que configure config_guestUserAllowEphemeralStateChange como false . Para obter informações adicionais sobre a criação de arquivos de sobreposição, consulte Personalizando a compilação com sobreposições de recursos .

Multiusuário automotivo Android

O Android Automotive depende da implementação multiusuário do Android para fornecer uma experiência de dispositivo compartilhada.

Tipos de usuários automotivos

Além dos tipos de usuários listados acima, as construções automotivas 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 deve ser headless . Existe apenas um usuário sem cabeça. Um usuário do sistema sem cabeça:
    • Deve sempre ser executado em segundo plano.
    • Não pode ser removido ou acessado diretamente pelo usuário, exceto no caso de provisionamento de dispositivos. Por exemplo, os usuários não podem mudar para esse tipo de usuário para executar tarefas como baixar aplicativos ou adicionar contas.
    • Só pode ser apagado por uma redefinição de fábrica.
  • Usuários regulares. O mesmo que Usuários Secundários , descrito acima, exceto que os usuários secundários:
    • Não execute em segundo plano (depois de ter sido desligado).
    • Pode ser criado diretamente através da interface do usuário.
    • Separaram dados de aplicativos, mas compartilham algumas configurações de todo o sistema. Por exemplo, Wi-Fi e Bluetooth.

Ressalvas

As seguintes exceções se aplicam a usuários do sistema headless e usuários regulares (secundários) no setor automotivo:

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

Habilitando o usuário do sistema headless

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

  • O usuário do sistema não tem interface e é executado apenas em segundo plano.
  • Os usuários humanos não interagem com o usuário do sistema.

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

Quando o usuário headless está habilitado:
  1. Para declarar o dispositivo como Automotivo, adicione o recurso android.hardware.type.automotive .
  2. Defina ro.fw.headless_system_user como true .
  3. Configure o valor de config_multiuserMaximumUsers como 2 (ou superior).

Para obter mais informações, consulte Suporte multiusuário no setor automotivo.

Android Automotive multiusuário em vários monitores

Um novo recurso experimental no Android 14 permite que usuários secundários completos (que não são o usuário em primeiro plano atual) iniciem atividades e obtenham acesso à IU na tela à qual estão atribuídos. Esse recurso permite que vários usuários simultâneos no Android Automotive OS ofereçam suporte a experiências no carro que fornecem a vários passageiros uma experiência de IU dedicada em uma única instância do Android.

Para ativar esse recurso para uso em desenvolvimento, os fabricantes de dispositivos devem definir uma sobreposição de recursos para substituir o seguinte valor em 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>

Você pode experimentar uma experiência apenas para passageiros (sem motorista) ativando a seguinte configuração 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>

No Android 14, você pode ativar a experiência no carro para vários passageiros como usuários convidados. Para permitir vários usuários convidados para uso em desenvolvimento, os fabricantes de dispositivos devem 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>