Provisionar dispositivos

Há várias maneiras de provisionar dispositivos. Os requisitos comerciais de seus clientes determinam quais métodos de provisionamento você quer usar.

Noções básicas sobre o provisionamento de dispositivos

Os cenários de implantação de provisionamento de dispositivos que seus clientes querem oferecer (como BYOD ou propriedade da empresa) determinam os modos de operação usados (como o modo de proprietário do dispositivo ou o modo de proprietário do perfil). Da mesma forma, os modos de operação e as versões do Android que precisam ter suporte determinam quais métodos de provisionamento vão ser implementados.

Cenários de implantação

Em um cenário de implantação de propriedade da empresa, a empresa é proprietária e controla totalmente os dispositivos que os funcionários usam. Normalmente, as organizações implantam dispositivos da empresa quando precisam monitorar e gerenciar estritamente todo o dispositivo.

As empresas que oferecem suporte a um cenário de implantação BYOD permitem que os funcionários tragam dispositivos pessoais para o trabalho e os usem para acessar informações e aplicativos privilegiados da empresa.

Modos de operação

As implantações de propriedade da empresa são aceitas pelo modo de operação proprietário do dispositivo. No Android, seu app de gerenciamento é chamado de controlador de política de dispositivo (DPC). O DPC aplica políticas em um dispositivo Android e, quando funciona como proprietário do dispositivo, gerencia todo o dispositivo. Como proprietário do dispositivo, o DPC pode realizar ações em todo o dispositivo, como configurar a conectividade, definir configurações globais e redefinir a configuração original.

As implantações BYOD são compatíveis com o modo de operação do proprietário do perfil. Por meio do DPC, a empresa permite o uso profissional de dispositivos pessoais adicionando um perfil de trabalho à conta de usuário principal no dispositivo. O perfil de trabalho está associado ao usuário principal, mas como um perfil separado. Como proprietário do perfil, o DPC gerencia apenas o perfil de trabalho no dispositivo e tem controle limitado fora desse perfil.

As implantações de dispositivos legados são compatíveis com o modo de operação legado, que permite o controle limitado do DPC sobre um dispositivo, como a capacidade de limpar um dispositivo, exigir um código de acesso ou aplicar algumas políticas. É possível fornecer gerenciamento de apps em dispositivos legados por meio do Google Play, permitindo que o usuário adicione uma Conta do Google ou fazendo com que seu DPC adicione uma conta do Google Play gerenciada ao dispositivo legado.

O modo legado não é recomendado para implantações em que é possível implementar o modo de proprietário do dispositivo ou o modo de proprietário do perfil. Use o nível mais alto possível de gerenciamento de dispositivos em vez de uma solução de "menor denominador comum" em uma frota grande.

Métodos de provisionamento do proprietário do dispositivo

Você precisa provisionar o modo de operação "Proprietário do dispositivo" durante a configuração inicial de um novo dispositivo ou após uma redefinição para a configuração original. O modo de proprietário do dispositivo não pode ser provisionado em um dispositivo a qualquer momento.

Dependendo do caso de uso, há dois tipos principais de métodos de provisionamento para o modo de proprietário do dispositivo.

  • Em um fluxo orientado a dispositivos, os administradores de TI podem usar a NFC para provisionar um grande número de dispositivos. Esse fluxo pode ser usado em cenários com uma conta do Google Play gerenciado ou do G Suite.
  • Em um fluxo baseado no usuário, as opções vão depender de a organização usar o G Suite ou não.
    • Em um cenário do G Suite, o usuário adiciona a Conta do Google durante a configuração inicial do dispositivo, e o DPC precisa orientá-lo nas etapas para configurar o proprietário do dispositivo. Um fluxo orientado ao usuário pode ajudar os usuários finais a configurar novos dispositivos e também é uma alternativa quando os dispositivos não são compatíveis com NFC.
    • Quando uma organização não usa o G Suite, use o método de contas do Google Play gerenciado.

Observação:se você limitar a distribuição do app a países específicos no Google Play, essas restrições serão ignoradas durante o provisionamento do proprietário do dispositivo. O DPC será transferido por download mesmo que o dispositivo não esteja em um país de destino.

Métodos de provisionamento do proprietário do perfil

O método recomendado para provisionar o modo de operação do proprietário do perfil depende se a organização usa ou não o G Suite.

  • No caso do G Suite, o método recomendado é um fluxo orientado ao usuário em que ele adiciona a Conta do Google, e o DPC o orienta nas etapas de configuração do proprietário do perfil.
  • Quando uma organização não usa o G Suite, o método recomendado é o método de contas do Google Play gerenciado.

O método tradicional, em que o usuário é instruído a instalar manualmente o DPC, também é compatível. O usuário precisa fazer o download do DPC no Google Play e instalá-lo. Em seguida, o DPC orienta o usuário durante o restante do processo para configurar o proprietário do perfil.

Métodos de provisionamento para dispositivos legados

Os dispositivos legados executam versões do Android anteriores à 5.0 ou não são compatíveis com perfis de trabalho. O método recomendado para provisionar um dispositivo legado depende de a organização usar Contas do Google gerenciadas.

  • No caso de Contas do Google gerenciadas, o método recomendado é um fluxo orientado ao usuário em que ele adiciona a Conta do Google, e o DPC o orienta nas etapas de configuração.
  • Quando uma organização não usa Contas do Google gerenciadas, o método recomendado é Contas do Google Play gerenciado, em que o usuário instala o DPC do Google Play. O DPC pode adicionar contas do Google Play gerenciado a um dispositivo legado, de maneira semelhante à maneira como ela adiciona a conta a um perfil de trabalho.

O método tradicional, em que o usuário é instruído a instalar manualmente o DPC, para depois adicionar uma Conta do Google, também é compatível. O usuário precisa fazer o download do DPC no Google Play e instalá-lo. Em seguida, o DPC orienta o usuário durante o restante do processo de configuração.

Principais diferenças de provisionamento nas versões do Android

Cenário
de implantação
Modo
de operação
Método
de provisionamento
*Antes
5.0
5,0,
5,1
6.0,
mais tarde
7.0,
mais tarde
Pertence à empresa Proprietário do dispositivo Código QR
Contas do Google Play gerenciado
Conta do Google
NFC
Legada Contas do Google Play gerenciado
Conta do Google
BYOD Perfil de proprietário Contas do Google Play gerenciado
Conta do Google **5,1
Instalação manual de DPC
Legada Contas do Google Play gerenciado
Conta do Google
Instalação manual de DPC

*O modo legado também é recomendado para dispositivos que não são compatíveis com perfis de trabalho, mesmo que executem uma versão do Android posterior à 5.0. Normalmente, são dispositivos com pouca memória RAM.

**O método Conta do Google no Android 5.1 oferece suporte apenas ao modo de operação do proprietário do perfil, e o usuário só pode configurá-lo em Configurações > Adicionar conta.

Considerações gerais de implementação

Veja alguns pontos a serem considerados ao gravar seu DPC, independentemente do modo de operação implementado.

Compatibilidade com o Google Play Services

O guia de APK do Google Play Services instrui os desenvolvedores a verificar a versão do serviço antes de realizar transações de API. Como a tentativa de atualizar o Google Play Services causa interrupções graves no processo de configuração do dispositivo, o DPC não pode tentar atualizar o Google Play Services antes do término do provisionamento de dispositivos.

Os principais pontos sobre a compatibilidade do DPC com o Google Play Services são:

  • O DPC precisa ser executado usando o Google Play Services fornecido com um dispositivo específico.
  • O DPC não pode depender de novos recursos quando versões futuras do Google Play Services estiverem disponíveis no momento do provisionamento de dispositivos.

Quando o provisionamento de dispositivos for concluído, o DPC poderá solicitar que o usuário atualize o Google Play Services para que o DPC possa usar os recursos mais recentes. No entanto, se um recurso não estiver disponível por algum motivo, o DPC precisará retornar à versão que acompanha o dispositivo.

Como recuperar detalhes do dispositivo

Devido a atrasos na propagação, pode levar até dois minutos para que uma chamada para devices.get de um dispositivo recém-registrado retorne os detalhes do dispositivo.

Se o fluxo de trabalho exigir os detalhes antes que o usuário final possa usar o dispositivo ou o perfil de trabalho, sugerimos usar uma tela de progresso no DPC e aguardar até que a chamada seja bem-sucedida.

Considerações de implementação para o modo de proprietário do perfil

Veja alguns pontos a serem considerados ao gravar seu DPC para implementar o modo de operação do proprietário do perfil.

Remover ou desativar o DPC pessoal

Ao provisionar o modo de proprietário do perfil de operação, o DPC começa a ser executado no perfil pessoal e inicia o processo para criar um perfil de trabalho. Depois que o perfil de trabalho é criado, o DPC também é executado dentro dele. O DPC no perfil de trabalho conclui o processo de provisionamento. Nesse momento, o DPC no perfil pessoal precisa desativar a si mesmo ou o usuário do dispositivo precisa removê-lo.

O usuário remove o DPC pessoal

  1. O DPC pessoal detecta ACTION_MANAGED_PROFILE_PROVISIONED.. Em dispositivos Android 5.1, o DPC pessoal detecta ACTION_MANAGED_PROFILE_ADDED.
  2. O DPC pessoal inicia uma solicitação de desinstalação ACTION_UNINSTALL_PACKAGE. Isso solicita que o usuário desinstale o DPC pessoal. Para a melhor experiência do usuário, o processo de desinstalação precisa ocorrer durante o fluxo de provisionamento.

O DPC pessoal é desativado automaticamente

  1. O DPC pessoal detecta ACTION_MANAGED_PROFILE_PROVISIONED.. Em dispositivos Android 5.1, o DPC pessoal detecta ACTION_MANAGED_PROFILE_ADDED.
  2. Se aplicável, o DPC pessoal precisa liberar os privilégios de administrador do dispositivo antes de ser desativado.
  3. O DPC pessoal inicia uma solicitação de desativação de setApplicationEnabledSetting com o parâmetro COMPONENT_ENABLED_STATE_DISABLED.
  4. O usuário pode reativar o DPC pessoal no Google Play.

Considerações de implementação do modo proprietário do dispositivo

Veja alguns pontos a serem considerados ao gravar seu DPC para implementar o modo de operação do proprietário do dispositivo.

O dispositivo precisa ser novo ou redefinido para a configuração original

Você precisa provisionar o modo de operação "Proprietário do dispositivo" durante a configuração inicial de um novo dispositivo ou após uma redefinição para a configuração original. O modo de proprietário do dispositivo não pode ser provisionado em um dispositivo a qualquer momento.

O modo "Proprietário do dispositivo" dá ao DPC controle total sobre um dispositivo. Se o provisionamento do modo de proprietário do dispositivo após a configuração inicial fosse permitido:

  • Um malware pode criar um proprietário e assumir o controle do dispositivo.
  • Problemas de privacidade podem ocorrer se já houver alguns dados ou apps do usuário no dispositivo.

Configurar o modo "Proprietário do dispositivo" apenas em dispositivos da empresa

Provisione o modo proprietário do dispositivo apenas nos dispositivos que você identificar como sendo da empresa do seu cliente. É possível verificar isso detectando um identificador de dispositivo exclusivo (como um número de série) ou usando um conjunto dedicado de contas autorizadas para registro de dispositivos por meio da política de EMM.

Se não for possível verificar a propriedade da empresa de um dispositivo, crie um mecanismo de proteção contra falhas para que o modo de proprietário do dispositivo não seja provisionado por engano. Por exemplo, você pode solicitar que o usuário do dispositivo confirme ou realize alguma ação afirmativa antes de provisionar o modo de proprietário do dispositivo.

Ativar apps do sistema

Quando o DPC provisiona um perfil de trabalho, todos os apps do sistema sem ícones na tela de início são considerados essenciais para o dispositivo e podem ser executados automaticamente no perfil de trabalho. Os apps do sistema que têm ícones na tela de início são considerados opcionais, e você pode decidir se eles vão ser ativados.

Ativar apps do sistema pelo Google Play

Ativar apps do sistema usando o Google Play é fácil, e os usuários vão receber atualizações assim que forem disponibilizadas.

Ativar apps do sistema usando as APIs do framework do Android

Se você quiser que os usuários vejam apps do sistema assim que começarem a usar os dispositivos, ative esses apps como parte do processo de provisionamento de dispositivo. O DPC ativa apps do sistema por nome de pacote ou intent, usando DevicePolicyManager.enableSystemApp().

Existem algumas maneiras de identificar os apps do sistema que você quer ativar e apresentar no console de EMM para administradores de TI.

Criar catálogos de apps do sistema

Nesse método, cada dispositivo determina quais apps estão nele e envia esses dados de volta ao console de EMM. O console de EMM exibe esses dados dinamicamente ao criar a política do dispositivo, o que permite que o administrador de TI gerencie apps por app.

  1. Se o perfil de trabalho ainda não estiver provisionado no dispositivo, extraia uma lista de todos os apps com ícones na tela de início em um dispositivo usando queryIntentActivities():
    private List getAppsWithLauncher() {
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    return getPackageManager().queryIntentActivities(i, 0);
    }
  2. Se o perfil de trabalho já estiver provisionado no dispositivo, extraia uma lista de todos os apps usando PackageManager.GET_DISABLED_COMPONENTS e PackageManager.GET_UNINSTALLED_PACKAGES.
  3. Para encontrar apps do sistema na lista de apps, marque FLAG_SYSTEM, que indica se um app está instalado na imagem do sistema do dispositivo.

Prós:

  • oferece aos administradores de TI uma visão completa dos apps em todos os dispositivos.
  • Fornece controle granular sobre quais aplicativos são ativados.

Desvantagens:

  • Como cada dispositivo tem um catálogo de apps diferente, é difícil aplicar um modelo de configuração de política única a vários tipos de dispositivos.
  • Pode ser desafiador apresentar o volume de apps específicos de OEM de maneira significativa para administradores de TI.

Categorizar apps do sistema por funcionalidade

Quando um administrador de TI quer ativar um app do sistema para um grupo de dispositivos, ele seleciona um app genérico com base na funcionalidade, por exemplo, "Navegador do sistema". O DPC permite todos os apps do sistema para essa intent.

Prós:

  • Ativação simples e baseada em funcionalidades para administradores de TI.
  • Garante a funcionalidade consistente em vários dispositivos, pelo menos para casos de uso comuns.

Desvantagens:

  • Limita os apps do sistema àqueles que têm suporte em todos os tipos de dispositivos.
  • Os administradores de TI podem querer enviar uma versão de OEM de um app (por exemplo, um navegador Samsung®), mas não outra (como um navegador LG®).
  • Os administradores de TI podem não querer enviar vários apps, mas não podem impedir isso quando há vários gerenciadores de intents.

Suporte apenas a apps do sistema aprovados

Você trabalha com o OEM para identificar pacotes específicos de OEM e oferecer suporte apenas a eles no console de EMM. Isso também permite catalogar as configurações gerenciadas para o app de OEM, o que não saberia de outra forma, porque o app de OEM não está hospedado no Google Play.

Prós:

  • simplifica bastante o fluxo de trabalho de integração e elimina os casos extremos que são problemáticos nas duas primeiras opções.
  • É possível catalogar as configurações gerenciadas para o app de OEM e apresentá-las no console de EMM para administradores de TI.
  • Permite relacionamentos próximos com OEMs para oferecer suporte a dispositivos principais.

Desvantagens:

  • Menos escalonável e, como resultado, reduz a escolha do consumidor.

Considerações de implementação para o modo legado

Veja alguns pontos a serem considerados ao gravar seu DPC para implementar o modo de operação legado.

Determinar se um dispositivo é compatível com perfis de trabalho

Para dispositivos que não oferecem suporte a perfis de trabalho, é possível provisionar o modo de operação legado. Um dispositivo não é compatível com perfis de trabalho quando:

  • Executa uma versão do Android anterior à 5.0.
  • tiver pouca quantidade de RAM, mesmo que execute uma versão do Android mais recente que a 5.0;

Para determinar se os perfis de trabalho são compatíveis, o DPC pode usar o PackageManager.

if (!getPackageManager().hasSystemFeature(
    PackageManager.FEATURE_MANAGED_USERS)) {
  // Use legacy mode
  ...
}

Cenários de teste para seu DPC

O Test DPC é um app de código aberto fornecido pelo Google para testar a funcionalidade empresarial do seu app de DPC. O DPC de teste está disponível no github ou no Google Play. É possível usar o DPC de teste para:

  • Simular recursos no Android
  • Definir e aplicar políticas
  • Definir restrições de apps e intents
  • Configurar perfis de trabalho
  • Configurar dispositivos Android totalmente gerenciados

Embora o objetivo principal do DPC de teste seja um veículo para testar sua solução empresarial para o Android, ele também pode ser usado como uma fonte de exemplo de código para recursos do Android.

Personalizar o provisionamento

Durante o provisionamento de dispositivos, a interface do usuário do sistema mostra uma cor padrão na barra de status e um logotipo padrão na parte de cima da tela. Defina cores e logotipos personalizados para fornecer uma transição visual consistente entre o DPC e a interface do sistema ou permita que os administradores façam isso usando o console de EMM. Por exemplo, um administrador pode fazer upload do logotipo de uma empresa ou personalizar a aparência das telas que mostram notificações.

Seu DPC aplica as opções de cor e logotipo usando os extras DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR e DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI.

Para definir uma cor personalizada, use EXTRA_PROVISIONING_MAIN_COLOR para definir um número inteiro que indique a cor predominante a ser exibida durante o provisionamento de dispositivos. Coloque o extra (constante) em uma intent com ACTION_PROVISION_MANAGED_PROFILE ou ACTION_PROVISION_MANAGED_DEVICE.

Para saber como os números inteiros são representados, consulte Cor. Para conferir um exemplo, consulte MAIN_COLOR no app TestDPC.

Para definir um logotipo personalizado, use o EXTRA_PROVISIONING_LOGO_URI e configure uma imagem que será exibida na parte superior da tela durante o provisionamento do dispositivo. Coloque o extra (constante) em uma intent com ACTION_PROVISION_MANAGED_PROFILE ou ACTION_PROVISION_MANAGED_DEVICE. Confira se a imagem tem uma densidade de pixels razoável para o dispositivo.

Para conferir um exemplo, consulte LOGO_URI no app TestDPC.

Método de código QR

O método de provisionamento de código QR configura e configura o modo proprietário do dispositivo lendo um código QR no assistente de configuração. O código QR contém um payload de pares de chave-valor com todas as informações necessárias para que o DPC provisione um dispositivo.

Seu console de EMM precisa fornecer uma maneira para os administradores de TI criarem códigos QR para os dispositivos que querem provisionar. O administrador de TI envia os códigos QR para os usuários finais, e eles fazem a leitura dos códigos QR para fornecer os dispositivos.

Casos de uso para provisionamento de código QR

Alguns dispositivos, como tablets, não são compatíveis com NFC. O provisionamento de código QR é uma maneira fácil de provisionar uma frota distribuída de dispositivos que não são compatíveis com NFC. Um administrador de TI pode enviar códigos QR aos usuários para permitir o provisionamento baseado em usuários.

O provisionamento de código QR não requer uma identidade do Google, como um domínio ou uma Conta do Google. As organizações que usam o Android, mas não usam o G Suite, não têm uma identidade do Google.

Assim como a NFC, o provisionamento de código QR permite implantações de quiosque e de uso único quando uma identidade do Google (ou qualquer identidade) não é necessária ou desejável. Por exemplo, um dispositivo de quiosque em uma loja não pertence a ninguém e não deve ter uma identidade de usuário final.

Criar um código QR

Um código QR válido para o provisionamento de um código QR é uma string JavaScript® Object Notation (JSON) codificada em UTF-8. É possível incluir estas propriedades em códigos QR válidos:

Sempre obrigatório

Obrigatório se um DPC ainda não estiver instalado no dispositivo

Recomendado se o dispositivo ainda não estiver conectado ao Wi-Fi

Opcional

Este exemplo cria um código QR válido:

{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
    "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
    "android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
        "dpc_company_name": "Acme Inc.",
        "emm_server_url": "https://server.emm.biz:8787",
        "another_custom_dpc_key": "dpc_custom_value"
    }
}

Processo de provisionamento de código QR

  1. O assistente de configuração solicita que o usuário toque na tela de boas-vindas seis vezes. Os toques devem ser feitos no mesmo lugar da tela.
  2. O assistente de configuração solicita que o usuário se conecte à Internet para que o assistente de configuração possa fazer o download de um leitor de código QR.
  3. O Google Play Services faz o download de um módulo que contém um mecanismo de reconhecimento de código QR.
  4. O usuário lê o código QR enviado pelo administrador de TI.
  5. O assistente de configuração faz o download do app DPC e inicia o processo de provisionamento do proprietário do dispositivo usando ACTION_PROVISION_MANAGED_DEVICE.

Método de contas do Google Play gerenciado

Um DPC pode usar o método de provisionamento de contas do Google Play gerenciado para configurar o modo de proprietário do dispositivo ou o modo de proprietário do perfil. Esse método de provisionamento é destinado a organizações que não usam o G Suite atualmente.

O método de provisionamento de contas do Google Play gerenciado usa a Biblioteca de Suporte DPC. Essa biblioteca de cliente garante o bom funcionamento das contas do Google Play gerenciado. Ele também mantém a compatibilidade com futuras atualizações do processo de provisionamento de contas do Google Play gerenciado.

Pré-requisitos para provisionar dispositivos

  • O ID corporativo é criado e registrado com uma identidade de EMM, e o ESA é definido, conforme descrito em Criar e registrar uma empresa.
  • A identidade corporativa do usuário é conhecida pelo console de EMM.
  • O usuário pode fazer login no app de DPC usando as credenciais aceitas pelo console de EMM, geralmente credenciais de e-mail corporativo.

Configurar o modo de proprietário do perfil

É possível provisionar o modo de operação do proprietário do perfil em um dispositivo usado em um cenário BYOD como um dispositivo pessoal.

  1. O usuário faz o download manual do DPC no Google Play e o inicia.
  2. O DPC provisiona o perfil de trabalho usando ACTION_PROVISION_MANAGED_PROFILE.
  3. Conclua as etapas finais de configuração.

Configurar o modo proprietário do dispositivo

Você precisa provisionar o modo de operação "Proprietário do dispositivo" durante a configuração inicial de um novo dispositivo ou após uma redefinição para a configuração original. O modo de proprietário do dispositivo não pode ser provisionado em um dispositivo a qualquer momento.

Durante a configuração do dispositivo, o usuário insere um token especial específico do DPC quando solicitado a adicionar uma conta. Um token está no formato "afw#DPC_IDENTIFIER". Para um EMM chamado ACME, "afw#acme" instala o DPC padrão do EMM ACME. Cada EMM precisa solicitar um identificador DPC específico do Google antes de usá-lo no processo de provisionamento.

  1. O usuário ativa um dispositivo novo ou redefinido para a configuração original, e o assistente de configuração é iniciado.
  2. Ao receber uma solicitação para adicionar uma conta, o usuário insere um token especial no formato "afw#DPC_IDENTIFIER" que identifica o DPC para o EMM.
  3. Usando o identificador DPC no token, o assistente de configuração adiciona uma Conta do Google temporária ao dispositivo. Essa conta temporária é usada apenas para fazer o download do DPC do EMM no Google Play e é removida nas etapas finais de configuração.
  4. O DPC provisiona o dispositivo usando ACTION_PROVISION_MANAGED_DEVICE.
  5. Conclua as etapas finais de configuração.

Configurar o modo legado

É possível provisionar o modo de operação legado em um dispositivo usado em um cenário BYOD como um dispositivo pessoal, caso o dispositivo não ofereça suporte aos perfis de trabalho.

  1. O usuário faz o download manual do DPC no Google Play e o inicia.
  2. O DPC se define como administrador de dispositivo.
  3. Conclua as etapas finais de configuração.

Etapas finais de configuração para todos os modos de operação

Execute essas etapas somente após a conclusão das etapas iniciais para configurar o modo de proprietário do perfil, o modo de proprietário do dispositivo ou o modo legado.

  1. O DPC garante que o dispositivo ofereça suporte a contas do Google Play gerenciado inicializando a Biblioteca de Suporte DPC:
    AndroidForWorkAccountSupport androidForWorkAccountSupport = 
        new AndroidForWorkAccountSupport(context, admin);
    androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
  2. Se você estiver configurando o modo proprietário do dispositivo em um dispositivo, esta etapa vai remover a Conta do Google temporária adicionada para fazer o download do DPC.
  3. O usuário faz login no DPC com as credenciais de EMM. Normalmente, são credenciais de e-mail corporativas.
  4. O DPC solicita credenciais da conta do Google Play gerenciado para o usuário corporativo autenticado no console de EMM.
  5. Se o console de EMM não tiver um userId do Google Play para o usuário, ele criará um novo usuário chamando Users.insert(). Se você estiver provisionando o modo proprietário do dispositivo, especifique uma conta de dispositivo (para implantações dedicadas de dispositivos) ou uma conta de usuário (para implantações da empresa).

    Observação: como os IDs de usuário são específicos do EMM, eles não poderão ser reutilizados se a empresa tiver a inscrição cancelada e for registrada novamente com outro EMM.

  6. Defina a política do dispositivo chamando Devices.update. Defina a política antes de adicionar a conta do Google Play gerenciado ao dispositivo. Caso contrário, a política não será aplicada por um curto período após a adição da conta.

  7. O console de EMM solicita as credenciais da conta do userId chamando Users.generateAuthenticationToken(). Esse token de autenticação é de curta duração e não pode ser reutilizado. O DPC precisa usar o token para adicionar a conta de maneira programática. O token não é útil para o usuário final.
  8. A API Google Play EMM retorna o token de autenticação para o console de EMM.
  9. O console de EMM encaminha o token de autenticação para o DPC.
  10. O DPC adiciona a conta do Google Play gerenciado ao dispositivo usando
    androidForWorkAccountSupport.addAndroidForWorkAccount(token,
        accountAddedCallback);
    .

Método da Conta do Google

Um DPC pode usar o método de provisionamento da Conta do Google para configurar o modo de proprietário do dispositivo, o modo de proprietário do perfil ou o modo legado. Com o método de provisionamento da Conta do Google, o DPC orienta o usuário nas etapas de provisionamento após a adição da Conta do Google durante a configuração inicial do dispositivo.

Quando um usuário digita as credenciais da Conta do Google:

  • O servidor de autenticação do Google autentica a conta de usuário.
  • O servidor de autenticação se comunica com o servidor empresarial para verificar se o domínio da conta está registrado como um domínio do G Suite ou um domínio gerenciado por EMM.
  • Nesse caso, o sistema faz o download automático do DPC associado ao domínio do Google Play e o instala.

Configurar o modo de proprietário do perfil

É possível provisionar o modo de operação do proprietário do perfil durante a configuração inicial de um dispositivo ou quando o usuário está adicionando uma conta. Para isso, use Configurações > Adicionar conta.

  1. A autenticação da conta é iniciada por um usuário no assistente de configuração ou em Configurações > Adicionar conta.
  2. O GMSCore inicia o provisionamento do perfil de trabalho usando o ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE.

  3. O DPC é transferido por download automaticamente para o dispositivo e iniciado usando o gerenciador ACTION_GET_PROVISIONING_MODE para verificar se o provisionamento do perfil de trabalho é compatível com o DPC. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações extras do perfil de trabalho, como endereço de e-mail. O DPC também receberá is_setup_assistant aqui como parte deste pacote. Este pacote será incluído nos gerenciadores ACTION_GET_PROVISIONING_MODE e ACTION_ADMIN_POLICY_COMPLIANCE.
    EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: nome da conta autenticada que será migrada para o novo perfil de trabalho.

  4. A plataforma realiza o provisionamento do perfil de trabalho.

  5. Quando o perfil de trabalho é provisionado, o DPC recebe a transmissão
    ACTION_PROFILE_PROVISIONING_COMPLETE. O gerenciador ACTION_ADMIN_POLICY_COMPLIANCE do DPC é iniciado no perfil de trabalho.
    Depois que o perfil de trabalho é criado, o DPC também é executado nele. O DPC envia políticas para essa Conta do Google gerenciada, garante que o dispositivo não esteja em um estado comprometido e verifica se as políticas são aplicadas (por exemplo, a exigência de uma senha).

  6. O DPC no perfil pessoal desativa a si mesmo ou o usuário o remove.

Configurar o modo proprietário do dispositivo ou COPE

Você precisa provisionar o modo de operação "Proprietário do dispositivo" durante a configuração inicial de um novo dispositivo ou após uma redefinição para a configuração original. O modo de proprietário do dispositivo não pode ser adicionado a um dispositivo em nenhum outro momento.

  1. A autenticação da conta é iniciada por um usuário no assistente de configuração.
  2. O GMSCore inicia o provisionamento do proprietário do dispositivo usando ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE. 3.O DPC é transferido por download automaticamente para o dispositivo e iniciado usando o gerenciador GET_PROVISIONING_MODE para escolher o modo de provisionamento desejado. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações extras do perfil de trabalho, como localidade, Wi-Fi e endereço de e-mail. O DPC também receberá is_setup_assistant aqui como parte deste pacote. Este pacote será incluído nos gerenciadores ACTION_GET_PROVISIONING_MODE e ACTION_ADMIN_POLICY_COMPLIANCE.
  3. A plataforma provisiona o dispositivo para o modo de provisionamento desejado.
  4. Quando o dispositivo é provisionado, o DPC recebe essas transmissões e o gerenciador ACTION_ADMIN_POLICY_COMPLIANCE do DPC é iniciado:
    ACTION_READY_FOR_USER_INITIALIZATION
    ACTION_PROFILE_PROVISIONING_COMPLETE.

  5. O DPC usa o valor de Global.DEVICE_PROVISIONED para verificar se o dispositivo é novo ou foi redefinido para a configuração original (não provisionado):
    0: não provisionado.
    1: Provisionado.

  6. O DPC conclui o processo de provisionamento enviando políticas para o dispositivo gerenciado, garantindo que o dispositivo não esteja em um estado comprometido e verificando se as políticas são aplicadas (como a exigência de uma senha).

Configurar o modo legado

É possível provisionar o modo legado de operação durante a configuração inicial de um dispositivo ou quando o usuário adiciona uma conta em Configurações > Adicionar conta. Os requisitos para disponibilizar o Google Play gerenciado para usuários com uma Conta do Google são:

  • A Conta do Google faz parte de um domínio gerenciado do Google.
  • O domínio do Google gerenciado está configurado para Android com um EMM vinculado à API EMM do Google Play.

Se você quiser fazer o gerenciamento de apps apenas em dispositivos legados, não vai precisar de um DPC. Nesse caso, o usuário adiciona a Conta do Google em Configurações > Adicionar conta. O gerenciamento inclui a seleção dos apps recomendados, a disponibilização dos apps particulares, a compra e a distribuição de licenças.

Se você quiser que seu DPC adicione a Conta do Google:

  1. O usuário faz o download do DPC no Google Play e o abre.
  2. O DPC adiciona a Conta do Google gerenciada usando AccountManager.addAccount(). Consulte TestDPC para ver um exemplo de implementação de como adicionar uma Conta do Google específica usando AccountManager.KEY_ACCOUNT_NAME.
  3. (Opcional) O DPC se define como administrador do dispositivo. Como administrador do dispositivo, o DPC tem recursos de gerenciamento de dispositivos além do gerenciamento de apps.

Considerações de implementação para o método da Conta do Google

  • O DPC precisa detectar o fluxo de autenticação da Conta do Google procurando extras específicos na intent de inicialização usada. Consulte LaunchIntentUtil:

    • Conta do tipo android.accounts.Account: indica que a conta foi adicionada no assistente de configuração ou em Configurações > Adicionar conta, o que exige que o DPC iniciado gerencie o dispositivo ou perfil.
    • is_setup_wizard do tipo booleano: se for verdadeiro, o DPC foi iniciado no assistente de configuração antes da conclusão dele. Caso contrário, ele foi iniciado em Configurações > Adicionar conta ou em outro fluxo.

    Uma verificação simples para saber se o DPC foi iniciado como parte do método da Conta do Google é:

boolean isSynchronousAuthLaunch(Intent launchIntent) {
  return launchIntent.hasExtra(“is_setup_wizard”);
}
  • O DPC não pode chamar finish() antes de concluir a configuração. Ela também precisa retornar um código de resultado positivo (como RESULT_OK), já que o DPC é iniciado com startActivityForResult() e aguarda um resultado.

    O DPC precisará aguardar um código de resultado do processo de provisionamento antes de chamar finish() se o fluxo de configuração do DPC atingir o ponto de envio de uma intent ACTION_PROVISION_*. Use os callbacks startActivityForResult() e onActivityResult() ao iniciar intents ACTION_PROVISION_*. Confira exemplos em LaunchActivity e SetupSyncAuthManagement.

    Devido à natureza potencialmente assíncrona do processo de configuração, o DPC não pode confiar em um código de resultado de RESULT_OK para indicar que o provisionamento foi bem-sucedido. A única maneira garantida é confiar nos callbacks DeviceAdminReceiver para que o provisionamento seja bem-sucedido. RESULT_CANCELED indica que o usuário fez backup em uma parte síncrona do fluxo de configuração, e o DPC precisa reagir a isso.

    Neste exemplo, o DPC inicia o provisionamento e aguarda o código de resultado de uma atividade:

Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
startActivityForResult(intent, REQUEST_MANAGED_PROFILE);
    ...
    @Override
        public void onActivityResult(int req, int res, Intent i) {
            if (req == REQUEST_MANAGED_PROFILE) {
                if (res == Activity.RESULT_OK) {
                    setResult(Activity.RESULT_OK);
                    finish();
                } else {
                    Toast.makeText(this, “Provisioning failed”,
                            Toast.LENGTH_SHORT).show();
                }
            }
        }
  • O DPC não deve tentar configurar o modo de operação do proprietário do dispositivo se o dispositivo já estiver provisionado (consulte ProvisioningStateUtil.isDeviceProvisioned()). Neste exemplo, o DPC verifica se o dispositivo está provisionado:
public static boolean isDeviceProvisioned(Context context) {
ContentResolver cr = context.getContentResolver();
    return
Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0;
}
  • Opcional. O DPC pode usar o extra EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE ao iniciar o provisionamento para transmitir informações de estado de volta ao DeviceAdminReceiver , que, no caso do proprietário do perfil, é executado no perfil de trabalho. O TestDPC usa esse extra para inserir um conjunto diferente de atividades no fluxo da Conta do Google após a conclusão do provisionamento. Confira mais detalhes em DeviceAdminReceiver.
public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver
{

    @Override
    public void onProfileProvisioningComplete(Context context, Intent intent) {
        // Retrieve the admin extras bundle, which we can use to determine the original context for
        // Test DPC’s launch.
        PersistableBundle extras = intent.getParcelableExtra(
                EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
        ...
  • Para configurar um perfil de trabalho, o DPC precisa migrar a conta adicionada para o novo perfil de trabalho. Para fazer isso, o DPC precisa transmitir a conta fornecida na intent de inicialização para ACTION_PROVISION_MANAGED_PROFILE.
  • O DPC precisa fornecer ao usuário uma call-to-action clara (como um botão "Concluir") para sair do app ao final da configuração. Assim, o usuário não acha que chegou a um beco sem saída no fluxo.
  • O DPC deve usar o tema do assistente de configuração ou a biblioteca de layout para que a experiência do usuário seja tranquila e pareça bem integrada.

Método NFC

Um DPC pode usar o método de provisionamento de NFC para configurar o modo de proprietário do dispositivo. No método de provisionamento de NFC ou tag NFC, você cria um app de programação NFC que contém as políticas iniciais e os detalhes de configuração, ajustes e provisionamento de Wi-Fi exigidos pelo cliente para configurar o modo de operação do proprietário do dispositivo. Quando você ou o cliente instala o app para programador de NFC em um dispositivo Android, esse dispositivo se torna o programador.

Para provisionar um dispositivo, o administrador de TI pega um novo dispositivo e o coloca no dispositivo do programador. A promoção transfere configurações ao dispositivo para que ele se conecte à Internet e faça o download das políticas e configurações adequadas. O dispositivo é gerenciado pelo DPC.

Após o provisionamento de um dispositivo, por um curto período, o Google Play exibe conteúdo de consumidor não gerenciado em vez dos apps e coleções aprovados que serão exibidos. Esse atraso pode durar de alguns minutos a uma hora.

Criar o app para programador de NFC e o dispositivo de programação

  1. Faça o download do app de exemplo para programador de NFC na página de exemplos empresariais do GitHub (link em inglês). Você pode usar o exemplo sem alterações ou modificá-lo para os valores padrão. Consulte o código de amostra dos parâmetros padrão para mais informações.
  2. Instale o app do programador no dispositivo escolhido.
  3. Inicie o app de programador NFC e selecione Load Defaults em com.example.android.apis. Esse texto pode variar de acordo com os parâmetros padrão definidos.

Provisionar um dispositivo do cliente

  1. Encoste o dispositivo do programador com um dispositivo novo ou redefinido para a configuração original.
  2. Verifique se o dispositivo permanece na tela de boas-vindas inicial que é exibida quando é iniciado. O texto é especificado em Ready to send:{...} no app do programador.
  3. Aguarde enquanto o DPC:
    1. Criptografa o dispositivo.
    2. Se for um dispositivo de acesso múltiplo por divisão de código (CDMA, na sigla em inglês): ativa o smartphone enquanto uma interface do usuário de telefonia é exibida (não é necessária interação).
    3. Configura a conexão Wi-Fi.
    4. Faz o download do arquivo .apk para com.example.android.apis.
    5. Instala com.example.android.apis.
    6. Define o administrador de dispositivos de exemplo em com.example.android.apis como proprietário do dispositivo.
    7. Mostra um "aviso" de sucesso quando o proprietário do dispositivo está ativado.
  4. Depois de retornar à página inicial (o assistente de configuração é ignorado automaticamente), verifique se com.example.android.apis está definido como proprietário do dispositivo:
    1. Em Configurações > Segurança > Administradores do dispositivo, confira se o administrador do dispositivo de exemplo não pode ser removido.
    2. Em Configurações > Usuários > Usuários e perfis > Você (proprietário), verifique se "Proprietário" é a única conta disponível (um dispositivo pode ter apenas um proprietário ativo por vez).

Exemplos de código do app de programação de NFC

As seções do app de programação de NFC que você vai considerar especialmente úteis têm os comentários inline. Para ver todo o exemplo de código no app de programador NFC, descompacte o arquivo .apk de exemplo usando um programa descompilador Java.

Método bootPropertyUI()

O método initializePropertyUI() inicializa elementos da interface do usuário (caixas de texto e caixas de seleção editáveis) no app de programação NFC. As mudanças nesses elementos são sincronizadas com os pares de chave-valor (KVPs) que a variável mProps contém. Em algum momento, a variável mProps é enviada para um dispositivo em uma conexão NFC.

private void initializePropertyUI(int paramInt1, int paramInt2, final String
paramString)
{
    Log.d("DeviceProvisioningProgrammerSample","initializeProperty for " + paramString);
    final EditText localEditText = (EditText)findViewById(paramInt1);
    final CheckBox localCheckBox =(CheckBox)findViewById(paramInt2);

/* Here we initialize text boxes so that when their text is edited the changes are synced to mProps. */

    if(localEditText != null)
      localEditText.addTextChangedListener(new TextWatcher()
      {
        public void afterTextChanged(Editable paramAnonymousEditable)
        {
        }
        public void beforeTextChanged(CharSequence paramAnonymousCharSequence, 
        int paramAnonymousInt1, int paramAnonymousInt2, int paramAnonymousInt3)
        {
      }
        public void onTextChanged(CharSequence paramAnonymousCharSequence, 
        int paramAnonymousInt1, int paramAnonymousInt2, in paramAnonymousInt3)
        {
          if ((localCheckBox != null) && (localCheckBox.isChecked()))
          {
              DeviceProvisioningProgrammerSample.this.mProps.put(paramString,
              localEditText.getText().toString());
              DeviceProvisioningProgrammerSample.this.refreshMessageView();
          }
        }
      });

/* Here we initialize check boxes, so that when they are unchecked, the edit 
boxes are disabled, and the corresponding KVPs are removed from mProps. When 
they are checked the KVPs are re added, and the text boxes are enabled. */

    if (localCheckBox != null) localCheckBox.setOnCheckedChangeListener
    (new CompoundButton.OnCheckedChangeListener()
      {
        public void onCheckedChanged(CompoundButton paramAnonymousCompoundButton, 
        boolean paramAnonymousBoolean)
        {
          Log.d("DeviceProvisioningProgrammerSample", "onCheckedChanged for 
          " + localEditText.getText().toString() + " isChecked = " + paramAnonymousBoolean);
         if (paramAnonymousBoolean)
          {
            localEditText.setEnabled(true);
            DeviceProvisioningProgrammerSample.this.mProps.put(paramString, 
            localEditText.getText().toString());
            DeviceProvisioningProgrammerSample.this.refreshMessageView(); return;
          }
          localEditText.setEnabled(false);
            DeviceProvisioningProgrammerSample.this.mProps.remove(paramString);
            DeviceProvisioningProgrammerSample.this.refreshMessageView();
      }
    });
}

Parâmetros padrão

Este exemplo de código define os valores padrão que serão enviados a um dispositivo em uma conexão NFC. Alguns parâmetros configuráveis não estão incluídos na amostra, mas talvez seja necessário incluí-los na implementação. É possível encontrar os parâmetros que não estão na amostra neste link.

public void loadDefaults1(View paramView)
{
/* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME */
((EditText)findViewById(2131034114)).setText("com.example.android.apis");
((CheckBox)findViewById(2131034113)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION */
((EditText)findViewById(2131034116)).setText
("https://sites.google.com/site/apidemodownload/somepage/ApiDemos.apk");
((CheckBox)findViewById(2131034115)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM (note: must be URL-safe)*/
((EditText)findViewById(2131034118)).setText("ZYk5xsY0xqic51CTqB9kLiMLqwk");
((CheckBox)findViewById(2131034117)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_WIFI_SSID */
((EditText)findViewById(2131034120)).setText("\"GoogleGuest\"");
((CheckBox)findViewById(2131034119)).setChecked(true);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_TIME_ZONE*/
((EditText)findViewById(2131034122)).setText("Europe/London");
((CheckBox)findViewById(2131034121)).setChecked(true);
((CheckBox)findViewById(2131034123)).setChecked(false);

/* This EditText holds
the KVP for EXTRA_PROVISIONING_LOCALE
((EditText)findViewById(2131034126)).setText("en_GB");
((CheckBox)findViewById(2131034125)).setChecked(true);
}

Método onCreate()

O método onCreate() inicializa o app de programação de NFC e as funções e recursos dele. As strings android.app.extra correspondem às strings descritas na documentação do DevicePolicyManager. Por exemplo: DevicePolicyManager.EXTRA_ PROVISIONING_WIFI_SSID == "android.app.extra.PROVISIONING_WIFI_SSID".

protected void onCreate(Bundle paramBundle)
{
Log.d("DeviceProvisioningProgrammerSample", "onCreate");
super.onCreate(paramBundle);
    setContentView(2130903040);
    this.mTextView = ((TextView)findViewById(2131034112));
    this.mProps = new Properties();
initializePropertyUI(2131034114, 2131034113,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME");
initializePropertyUI(2131034116, 2131034115,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION");
initializePropertyUI(2131034118, 2131034117,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM");
initializePropertyUI(2131034120, 2131034119,
"android.app.extra.PROVISIONING_WIFI_SSID");
initializePropertyUI(2131034122, 2131034121,
"android.app.extra.PROVISIONING_TIME_ZONE");
initializePropertyUI(2131034124, 2131034123,
"android.app.extra.PROVISIONING_LOCAL_TIME");
initializePropertyUI(2131034126, 2131034125,
"android.app.extra.PROVISIONING_LOCALE");
    refreshMessageView();

/*  Next we get the default NFC adapter for the Android device being used, and define 
CreateNdefMessageCallback() for that adapter, which is invoked when another NFC device
capable of NDEF push (Android Beam) is within range. CreateNdefMessageCallback is an interface
that has one abstract method that needs to be defined. That method, createNdefMessage,
creates the message to be pushed. */

NfcAdapter.getDefaultAdapter(this).setNdefPushMessageCallback(new
NfcAdapter.CreateNdefMessageCallback()
    {
      public NdefMessage
createNdefMessage(NfcEvent paramAnonymousNfcEvent)
      {

/* Here ndefMessage creates an output stream which contains the values from mProps. */

Log.d("DeviceProvisioningProgrammerSample", "Sending Nfc");
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
        try
        {
DeviceProvisioningProgrammerSample.this.mProps.store(localByteArrayOutputStream,
DeviceProvisioningProgrammerSample.this.getString(2130968578));
DeviceProvisioningProgrammerSample.this.mTextView.post(new Runnable()
{
            public void run()
            {
DeviceProvisioningProgrammerSample.this.refreshMessageView();
            }
      });

/* Here NdefMessage is created containing an NdefRecord. The NdefRecord contains its record 
type, and a byte array derived from the mProps output stream. */

          return new NdefMessage(new NdefRecord[] {
NdefRecord.createMime("application/com.android.managedprovisioning",
localByteArrayOutputStream.toByteArray()) });
        }
        catch
(IOException localIOException)
        {
          while (true)
Log.e("DeviceProvisioningProgrammerSample", "io exception", localIOException);
       }
      }
    }
    , this, new Activity[0]);
}

Outros recursos

A NFC avançada descreve tópicos avançados de NFC, como trabalhar com várias tecnologias de etiqueta, gravação em tags NFC e envio em primeiro plano.

Método de instalação manual do DPC

Para configurar o modo de proprietário do perfil usando o método de provisionamento manual de instalação de DPC, o usuário faz o download do DPC no Google Play e o instala. Em seguida, o DPC orienta o usuário durante o restante do processo para configurar o proprietário do perfil da Conta do Google gerenciada.

O DPC pode adicionar a Conta do Google gerenciada antes ou depois de criar o perfil de trabalho. Por exemplo, o DPC pode criar um perfil de trabalho com base nas credenciais de EMM de um usuário em vez de solicitar a Conta do Google gerenciada primeiro.

Configurar o modo de proprietário do perfil

Adicione a Conta do Google gerenciada primeiro

  1. O usuário faz o download do DPC no Google Play e o instala.
  2. O DPC adiciona a Conta do Google gerenciada antes de criar o perfil de trabalho usando AccountManager.addAccount().
  3. O DPC começa a ser executado no perfil pessoal e inicia o processo para criar um perfil de trabalho usando: ACTION_PROVISION_MANAGED_PROFILE: provisiona o perfil de trabalho.
    EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações extras do perfil de trabalho, como localidade, Wi-Fi e endereço de e-mail.
    EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: nome da conta autenticada que será migrada para o novo perfil de trabalho.
  4. O DPC no perfil de trabalho conclui o processo de provisionamento. Depois que o perfil de trabalho é criado, o DPC também passa a ser executado nele. O DPC no perfil de trabalho conclui o processo de provisionamento enviando políticas para essa Conta do Google gerenciada, garantindo que o dispositivo não esteja em um estado comprometido e verificando se as políticas são aplicadas (como a exigência de uma senha).
  5. Quando o perfil de trabalho é provisionado, o DPC recebe a transmissão ACTION_PROFILE_PROVISIONING_COMPLETE.
  6. O DPC no perfil pessoal desativa a si mesmo ou o usuário o remove.

Crie o perfil de trabalho primeiro

  1. O usuário faz o download do DPC no Google Play e o instala.
  2. O DPC começa a ser executado no perfil pessoal e inicia o processo para criar um perfil de trabalho usando: ACTION_PROVISION_MANAGED_PROFILE: provisiona o perfil de trabalho.
    EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações extras do perfil de trabalho, como localidade, Wi-Fi e endereço de e-mail.
  3. O DPC adiciona a Conta do Google gerenciada usando AccountManager.addAccount().
  4. O DPC recebe a transmissão ACTION_PROFILE_PROVISIONING_COMPLETE e lê EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE.
  5. O DPC no perfil de trabalho conclui o processo de provisionamento. Depois que o perfil de trabalho é criado, o DPC também passa a ser executado nele. O DPC no perfil de trabalho conclui o processo de provisionamento enviando políticas para essa Conta do Google gerenciada, garantindo que o dispositivo não esteja em um estado comprometido e verificando se as políticas são aplicadas (como a exigência de uma senha).
  6. O DPC ativa o perfil de trabalho usando DevicePolicyManager.setProfileEnabled().
  7. O DPC no perfil pessoal desativa a si mesmo ou o usuário o remove.

Configurar o modo legado

É possível provisionar o modo legado de operação durante a configuração inicial de um dispositivo ou quando o usuário adiciona uma conta em Configurações > Adicionar conta. Os requisitos para disponibilizar o Google Play gerenciado para usuários com uma Conta do Google são:

  • A Conta do Google faz parte de um domínio gerenciado do Google.
  • O domínio gerenciado do Google está configurado para Android na empresa com um EMM vinculado à API EMM do Google Play.

Se você quiser fazer o gerenciamento de apps apenas em dispositivos legados, não vai precisar de um DPC. Nesse caso, o usuário adiciona a Conta do Google em Configurações > Adicionar conta. O gerenciamento inclui a seleção dos apps recomendados, a disponibilização dos apps particulares, a compra e a distribuição de licenças.

Se você quiser que seu DPC adicione a Conta do Google:

  1. O usuário faz o download do DPC no Google Play e o abre.
  2. O DPC adiciona a Conta do Google gerenciada usando AccountManager.addAccount(). Consulte TestDPC para ver um exemplo de implementação de como adicionar uma Conta do Google específica usando AccountManager.KEY_ACCOUNT_NAME.
  3. (Opcional) O DPC se define como administrador do dispositivo. Como administrador do dispositivo, o DPC tem recursos de gerenciamento de dispositivos além do gerenciamento de apps.