Importante: não aceitamos mais novos registros para a API Play EMM. Saiba mais.

Provisionar dispositivos

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Há várias maneiras de provisionar dispositivos. Os requisitos de negócios dos seus clientes determinam quais métodos de provisionamento você vai usar.

Noções básicas de provisionamento de dispositivos

Os cenários de implantação de provisionamento de dispositivos para os quais os clientes querem oferecer suporte, como BYOD ou propriedade da empresa, determinam os modos de operação que você vai usar, como o modo de proprietário do dispositivo ou de proprietário do perfil. Da mesma forma, os modos de operação e as versões do Android que você precisa oferecer suporte determinam quais métodos de provisionamento você implementará.

Cenários de implantação

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

As empresas que oferecem suporte ao cenário de implantação BYOD permitem que os funcionários usem dispositivos pessoais para trabalhar e usem esses dispositivos para acessar informações e aplicativos privilegiados.

Modos de operação

As implantações da empresa são compatíveis com o 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 atua como proprietário, gerencia todo o dispositivo. Como proprietário do dispositivo, o DPC pode realizar ações que abrangem todo o dispositivo, como configurar a conectividade do dispositivo, definir configurações globais e redefinir para a configuração original.

As implantações BYOD são compatíveis com o modo de operação proprietário do perfil. Com o DPC, a empresa permite que dispositivos pessoais sejam usados para trabalho adicionando um perfil de trabalho à conta de usuário principal no dispositivo. O perfil de trabalho é 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 dele.

As implantações de dispositivos legados são compatíveis com o modo de operação legacy, que permite o controle limitado do DPC de um dispositivo, como a capacidade de excluir permanentemente um dispositivo, exigir um código de cartão ou aplicar algumas políticas. Você pode permitir o gerenciamento de apps em dispositivos legados pelo Google Play permitindo que o usuário adicione uma Conta do Google ou permitindo que o DPC adicione uma conta gerenciada do Google Play ao dispositivo legado.

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

Métodos de provisionamento de proprietários de dispositivos

É necessário provisionar o modo de operação do 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 Proprietário do dispositivo não pode ser provisionado em um dispositivo em nenhum outro momento.

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

  • Em um fluxo baseado em dispositivo, 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 contas do Google Play gerenciadas ou no G Suite.
  • Em um fluxo baseado em usuários, as opções dependem se a organização usa o G Suite.
    • 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 orientar o usuário sobre as etapas de configuração do proprietário do dispositivo. Um fluxo orientado pelo 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.

Métodos de provisionamento do proprietário do perfil

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

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

O método tradicional, em que o usuário é instruído a instalar manualmente a DPC, também é compatível. Ele depende do usuário para fazer o download do DPC do Google Play e a instalação, então o DPC orienta o usuário pelo restante do processo de configuração do 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 da organização usar Contas do Google gerenciadas.

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

O método tradicional, em que o usuário é instruído a instalar manualmente o DPC, que adiciona uma Conta do Google, também é compatível. Ele depende do usuário para fazer o download do DPC do Google Play e a instalação, e o DPC orienta o usuário pelo 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
*Pré
5,0
5,0,
5,1
6.0,
mais tarde
7.0,
mais tarde
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 do DPC
Legada Contas do Google Play gerenciado
Conta do Google
Instalação manual do DPC

*O modo legado também é recomendado para dispositivos que não oferecem suporte a perfis de trabalho, mesmo que o dispositivo execute uma versão do Android posterior à 5.0. Esses dispositivos geralmente têm pouca RAM.

**O método Conta do Google no Android 5.1 é compatível apenas com o modo de operação de 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 aspectos a serem considerados ao programar seu DPC, independentemente do modo de operação implementado.

Compatibilidade do Google Play Services

O guia do APK do Google Play Services instrui os desenvolvedores a fazer uma verificação de versão do Google Play Services antes de realizar transações de API. Como a tentativa de atualizar o Google Play Services causa sérias interrupções no processo de configuração do dispositivo, o DPC não pode tentar atualizar o Google Play Services antes da conclusão do provisionamento do dispositivo.

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 deve depender de novos recursos nas versões futuras do Google Play Services disponíveis no momento do provisionamento do dispositivo.

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

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

Veja alguns pontos a serem considerados ao criar o DPC para implementar o modo de operação "Proprietário do perfil".

Remover ou desativar o DPC pessoal

Ao provisionar o modo de operação de proprietário do perfil, o DPC começa a ser executado no perfil pessoal e inicia o processo para criar um perfil de trabalho. Quando 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 ser desativado, 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 precisa detectar o ACTION_MANAGED_PROFILE_ADDED.
  2. O DPC pessoal inicia uma solicitação de desinstalação ACTION_UNINSTALL_PACKAGE. Isso faz o usuário desinstalar o DPC pessoal. Para a melhor experiência do usuário, o processo de desinstalação precisa ocorrer durante o fluxo de provisionamento.

DPC pessoal se desativa

  1. O DPC pessoal detecta ACTION_MANAGED_PROFILE_PROVISIONED.. Em dispositivos Android 5.1, o DPC pessoal precisa detectar o ACTION_MANAGED_PROFILE_ADDED.
  2. Se aplicável, o DPC pessoal precisa liberar os privilégios de administrador do dispositivo antes de desativar a si mesmo.
  3. O DPC pessoal inicia uma solicitação de desativação do 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 para o modo "Proprietário do dispositivo"

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

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

É necessário provisionar o modo de operação do 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 Proprietário do dispositivo não pode ser provisionado em um dispositivo em nenhum outro momento.

O modo Proprietário do dispositivo dá ao DPC controle total sobre um dispositivo. Se o provisionamento do modo proprietário do dispositivo depois da configuração inicial for permitido:

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

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

Provisione o modo "Proprietário do dispositivo" apenas em dispositivos que você identificar como propriedade da empresa do cliente. Para verificar isso, detecte um identificador de dispositivo exclusivo (como um número de série) ou use um conjunto dedicado de contas que estão autorizadas para registro do dispositivo com a política de EMM.

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

Ativar apps do sistema

Quando o DPC provisiona um perfil de trabalho, considera-se que todos os apps do sistema sem ícones na tela de início são 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 ativá-los.

Ativar apps do sistema pelo Google Play

A ativação de apps do sistema com o Google Play é fácil, e os usuários recebem as atualizações do app sempre que estiverem disponíveis.

Ativar apps do sistema usando as APIs do framework do Android

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

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

Criar catálogos de apps do sistema

Nesse método, cada dispositivo determina quais apps estão no dispositivo e envia esses dados de volta para o console do 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 usando o 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. Encontre apps do sistema na lista de apps marcando 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 apps estã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 um desafio apresentar o volume de apps específicos de OEM de maneira significativa para os administradores de TI.

Categorizar apps do sistema por funcionalidade

Quando um administrador de TI quiser 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 que todos os apps do sistema tenham essa intent.

Prós:

  • Capacitação simples e baseada em funcionalidade para administradores de TI.
  • Garante a consistência da funcionalidade em vários dispositivos, pelo menos para casos de uso comuns.

Desvantagens:

  • Limita os apps do sistema aos que têm suporte em todos os tipos de dispositivo.
  • Os administradores de TI podem querer enviar uma versão de OEM de um app (como 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 conseguem evitá-lo quando há vários gerenciadores de intents.

Suporte apenas a apps aprovados do sistema

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

Prós:

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

Desvantagens:

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

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

Veja alguns pontos a serem considerados ao criar o 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 oferece suporte a perfis de trabalho quando:

  • Executa uma versão do Android anterior à 5.0.
  • Tem uma quantidade baixa de RAM, mesmo que execute uma versão do Android posterior à 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 o DPC

O DD de teste é um app de código aberto fornecido pelo Google para testar a funcionalidade empresarial no seu app 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 DPC de teste seja destinado principalmente como veículo para testar a solução corporativa para Android, você também pode usá-lo como fonte de código de exemplo 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 superior 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 de um logotipo da 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 ver como os números inteiros são representados, consulte Cor. Para ver um exemplo, consulte MAIN_COLOR in the TestDPC app.

Para definir um logotipo personalizado, use EXTRA_PROVISIONING_LOGO_URI para definir uma imagem que vai ser mostrada na parte de cima durante o provisionamento de dispositivos. Coloque o extra (constante) em uma intent com ACTION_PROVISION_MANAGED_PROFILE ou ACTION_PROVISION_MANAGED_DEVICE. Verifique se a imagem tem uma densidade de pixels razoável para o dispositivo.

Para ver um exemplo, consulte LOGO_URI no app TestDPC.

Método de código QR

O método de provisionamento de código QR define e configura o modo de proprietário do dispositivo lendo um código QR do 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 o DPC provisionar um dispositivo.

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

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 têm suporte à NFC. Um administrador de TI pode enviar códigos QR para permitir o provisionamento orientado por usuários.

O provisionamento de código QR não requer uma identidade, como um domínio ou 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 implantar quiosques e uso único em que 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 provisionamento de código QR é uma string de JavaScript® Object Notation (JSON) codificada em UTF-8. Você pode incluir estas propriedades em um código QR válido:

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 precisam ser feitos no mesmo lugar da tela.
  2. O assistente de configuração solicita que o usuário se conecte à Internet para 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 fornecido pelo administrador de TI.
  5. O assistente de configuração vai fazer o download do app DPC e iniciar 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 gerenciado de provisionamento de contas do Google Play para configurar o modo de proprietário do dispositivo ou de proprietário do perfil. Esse método de provisionamento é destinado a organizações que atualmente não usam o G Suite.

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

Pré-requisitos para provisionar dispositivos

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

Configurar o modo de proprietário do perfil

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

  1. O usuário faz o download manual do DPC pelo 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"

É necessário provisionar o modo de proprietário do dispositivo durante a configuração inicial de um novo dispositivo ou após uma redefinição de fábrica. O modo Proprietário do dispositivo não pode ser provisionado em um dispositivo em nenhum outro momento.

Durante a configuração do dispositivo, o usuário insere um token específico específico do DPC quando precisa adicionar uma conta. Um token está no formato "afw#DPC_IDENTIFIER". Para um EMM chamado ACME, "afw#acme" instalaria o DPC padrão do ACME EMM. 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. Quando for solicitada a adição de uma conta, o usuário inserirá um token especial no formato "afw#DPC_IDENTIFIER" que identifica o DPC do seu 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 para o 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.

Método da Conta do Google

Um DPC pode usar o método de provisionamento da Conta do Google para configurar o modo proprietário do dispositivo, proprietário do perfil ou modo legado. Com o método de provisionamento da Conta do Google, o DPC orienta o usuário pelas etapas de provisionamento após ele adicionar a 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 corporativo para verificar se o domínio da conta está registrado como um domínio do G Suite ou gerenciado pelo EMM.
  • Nesse caso, o sistema faz o download automático do DPC associado ao domínio no 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 em 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 [PROVISION_FROM_TRUSTED_SOURCE].

  3. O DPC é transferido automaticamente para o dispositivo e iniciado usando o gerenciador ACTION_GET_PROVISIONING_MODE para verificar se o provisionamento do perfil de trabalho é compatível. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações adicionais para o perfil de trabalho, como endereço de e-mail. O DPC também receberá is_setup_wizard 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_MIGRATENome 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 dentro dele. O DPC envia políticas para essa Conta do Google gerenciada, garante que o dispositivo não esteja comprometido e verifica se as políticas foram aplicadas, como exigir uma senha.

  6. O DPC no perfil pessoal será desativado ou removido pelo usuário.

Configurar o modo de proprietário do dispositivo ou COPE

É necessário provisionar o modo de proprietário do dispositivo durante a configuração inicial de um novo dispositivo ou após uma redefinição de fábrica. O modo 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 [PROVISION_FROM_TRUSTED\SOURCE]. 3.O DPC é transferido automaticamente para o dispositivo e iniciado com o gerenciador GET_PROVISIONING_MODE para escolher o modo de provisionamento desejado. EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: informações adicionais sobre o perfil de trabalho, como localidade, Wi-Fi, endereço de e-mail. O DPC também receberá is_setup_wizard 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 estas 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: desprovisionado.
    1: provisionado.

  6. O DPC conclui o processo de provisionamento enviando políticas para esse dispositivo gerenciado, garantindo que o dispositivo não esteja com estado comprometido e verificando se as políticas foram aplicadas (como exigindo uma senha).

Configurar o modo legado

Você pode 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 aos usuários com uma Conta do Google são os seguintes:

  • 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ê só quiser gerenciar apps 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 de apps inclui a seleção de apps recomendados, a disponibilização de apps particulares, a compra e a distribuição de licenças.

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

  1. O usuário faz o download do DPC pelo Google Play e o inicia.
  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, que exige o DPC lançado para gerenciar o dispositivo ou perfil.
    • is_setup_wizard do tipo booleano: se verdadeiro, o DPC foi iniciado no assistente de configuração antes da conclusão do assistente de configuração, caso contrário, ele está em Configurações > Adicionar conta ou em outro fluxo.

    Uma verificação simples para saber se o DPC foi lançado 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 retorna um código de resultado positivo, como RESULT_OK, à medida que o DPC é iniciado com startActivityForResult() e aguarda um resultado.

    O DPC precisa aguardar um código de resultado do processo de provisionamento antes de chamar finish(), caso o fluxo de configuração do DPC alcance o ponto de envio de uma intent ACTION_PROVISION_*. Use os callbacks startActivityForResult() e onActivityResult() ao iniciar intents ACTION_PROVISION_*. Consulte LaunchActivity e SetupSyncAuthManagement para ver exemplos.

    Devido à natureza potencialmente assíncrona do processo de configuração, o DPC não pode depender de um código de resultado de RESULT_OK para indicar que o provisionamento foi bem-sucedido. A única maneira garantida é confiar em callbacks DeviceAdminReceiver para o provisionamento. RESULT_CANCELED indica que o usuário saiu 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 do 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 ele 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 para o DeviceAdminReceiver , que no caso do proprietário do perfil está sendo executado no perfil de trabalho. O Test DPC usa esse extra para inserir um conjunto diferente de atividades no fluxo da Conta do Google após a conclusão do provisionamento. Veja 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 do 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 no final da configuração. Assim, o usuário não pensa que alcançou um final sem saída no fluxo.
  • O DPC precisa usar o tema ou a biblioteca de layout do assistente de configuração para que a experiência do usuário seja suave e 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 NFC, você cria um app do programador NFC que contém as políticas iniciais e os detalhes de configuração, configurações e Wi-Fi exigidos pelo cliente para configurar o modo de operação do proprietário do dispositivo. Quando você ou seu cliente instalam o app de programador NFC em um dispositivo Android, esse dispositivo se torna o programador.

Para provisionar um dispositivo, o administrador de TI tira um novo dispositivo da caixa e o aproxima do dispositivo do programador. O problema transfere as configurações para o dispositivo para que ele se conecte à Internet e faça o download das políticas e configurações apropriadas. O dispositivo será gerenciado pelo DPC.

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

Criar o app e o dispositivo de programador da NFC

  1. Faça o download do app de amostra do programador de NFC (em inglês) na comunidade de EMM no Google Cloud Connect. Você pode usar o app de exemplo no estado em que se encontra ou modificá-lo para seus valores padrão. Consulte o exemplo de código dos Parâmetros padrão.
  2. Instale o app do programador NFC no dispositivo que será usado.
  3. Inicie o app de programação NFC e selecione Carregar padrões para com.example.android.apis. Esse texto pode variar de acordo com os parâmetros padrão definidos.

Provisionar o dispositivo de um cliente

  1. Encoste o dispositivo do programador em um dispositivo novo ou que tenha sido redefinido para a configuração original.
  2. Verifique se o dispositivo permanece na tela inicial Welcome, que é exibida quando ele é 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 com acesso múltiplo de código de visualização (CDMA, na sigla em inglês): ativa o smartphone enquanto uma interface do usuário de telefonia é exibida (nenhuma interação necessária).
    3. Configura a conexão Wi-Fi.
    4. Faz o download do arquivo .apk de com.example.android.apis.
    5. Instalação de com.example.android.apis.
    6. Define o Administrador do dispositivo 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 o proprietário do dispositivo:
    1. Em Configurações > Segurança > Administradores do dispositivo, confirme que a amostra não foi removida.
    2. Em Configurações > Usuários > Usuários e perfis > Você (proprietário), verifique se o proprietário é a única conta disponível (um dispositivo só pode ter um proprietário ativo por vez).

Amostras de código do app do programador de NFC

As seções do app do programador NFC que você considera especialmente úteis têm comentários in-line. Para ver toda a amostra de código no app do programador NFC, descompacte o arquivo .apk de exemplo usando um programa descompilador Java.

Método bootPropertyUI()

O método initializePropertyUI() inicializa os elementos da interface do usuário (caixas de texto e caixas de seleção editáveis) no app NFC do programador. As alterações nesses elementos são sincronizadas com os pares de chave-valor (KVPs) que a variável mProps contém. Por fim, 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 para um dispositivo em uma inclusão de NFC. Alguns parâmetros configuráveis não estão incluídos na amostra, mas talvez seja necessário incluí-los na implementação. Encontre parâmetros que não estão na amostra aqui.

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 do programador NFC e as funções e recursos dele. As strings android.app.extra correspondem às 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 etiquetas 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 DPC, o usuário faz o download e instala o DPC pelo Google Play. Em seguida, o DPC orienta o usuário pelo restante do processo de configuração do proprietário do perfil para a 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 do 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 pelo 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_BUNDLEInformações adicionais no perfil de trabalho, como localidade, Wi-Fi, endereço de e-mail.
    EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATENome da conta autenticada que será migrada para o novo perfil de trabalho.
  4. O DPC no perfil de trabalho conclui o processo de provisionamento. Quando o perfil de trabalho é criado, o DPC também é executado dentro dele. 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 comprometido e verificando se as políticas foram aplicadas (como exigindo 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 será desativado ou removido pelo usuário.

Criar o perfil de trabalho primeiro

  1. O usuário faz o download do DPC pelo 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_BUNDLEInformações adicionais sobre o perfil de trabalho, como localidade, Wi-Fi, 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. Quando o perfil de trabalho é criado, o DPC também é executado dentro dele. 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 comprometido e verificando se as políticas foram aplicadas (como exigindo uma senha).
  6. O DPC ativa o perfil de trabalho usando DevicePolicyManager.setProfileEnabled().
  7. O DPC no perfil pessoal será desativado ou removido pelo usuário.

Configurar o modo legado

Você pode 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 aos usuários com uma Conta do Google são os seguintes:

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

Se você só quiser gerenciar apps 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 de apps inclui a seleção de apps recomendados, a disponibilização de apps particulares, a compra e a distribuição de licenças.

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

  1. O usuário faz o download do DPC pelo Google Play e o inicia.
  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.