O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Implementando Gerenciamento de Dispositivos

Esta seção descreve como habilitar e validar os recursos de gerenciamento de dispositivos necessários para preparar dispositivos para perfis gerenciados. Ele também cobre casos de usuário proprietário de dispositivo que são essenciais em um ambiente corporativo.

Além do código AOSP, um dispositivo requer os seguintes componentes para funcionar com perfis gerenciados.

Requerimentos gerais

Os dispositivos que pretendem oferecer suporte ao gerenciamento de dispositivos devem atender aos seguintes requisitos gerais.

Valores térmicos de HAL

O Android 7.0 e posterior inclui suporte para HardwarePropertiesManager API, uma API de monitoramento de dispositivo e relatório de integridade que permite que os aplicativos consultem o estado do hardware do dispositivo. Esta API é exposta via android.os.HardwarePropertiesManager e faz chamadas por meio de HardwarePropertiesManagerService para o HAL térmico do hardware ( hardware/libhardware/include/hardware/thermal.h ). É uma API protegida, o que significa que apenas os aplicativos Device Policy Controller (DPC) do proprietário do dispositivo / perfil e o VrListenerService atual podem chamá-la.

Para oferecer suporte à API HardwarePropertiesManager, a implementação de HAL térmica do dispositivo deve ser capaz de relatar os seguintes valores:

Valor Escala de Relatório Possibilita
Temperatura de [CPU | GPU | Bateria | Pele do dispositivo] Temperatura do componente em graus Celsius Os aplicativos podem verificar as temperaturas do dispositivo e as temperaturas de limitação / desligamento dos componentes
CPU ativa / tempo total habilitado Tempo em milissegundos Os aplicativos podem verificar o uso da CPU por núcleo
Velocidade do ventilador RPM Os aplicativos podem verificar a velocidade do ventilador

As implementações devem lidar corretamente com situações de valores de relatório quando um núcleo (ou GPU, bateria, ventilador) fica offline ou é conectado / desconectado.

Sem pouca RAM

O dispositivo não deve ser um dispositivo com pouca RAM, o que significa que ro.config.low_ram não deve ser definido. A estrutura limita automaticamente o número de usuários a 1 quando o sinalizador low_ram é definido.

Uses-feature

Os dispositivos devem definir os seguintes uses-feature :

android.software.managed_users
android.software.device_admin

Para confirmar que esses valores de uses-feature foram definidos em um dispositivo, execute: adb shell pm list features .

Apps essenciais apenas

Por padrão, apenas os aplicativos essenciais para a operação correta do perfil devem ser ativados como parte do provisionamento de um dispositivo gerenciado. Os OEMs devem garantir que o perfil ou dispositivo gerenciado tenha todos os aplicativos necessários, modificando:

vendor_required_apps_managed_profile.xml
vendor_required_apps_managed_device.xml
vendor_disallowed_apps_managed_profile.xml
vendor_disallowed_apps_managed_device.xml
/*
 * The following are for Android 9 and higher only
 */
vendor_required_apps_managed_user.xml
vendor_disallowed_apps_managed_user.xml

Aplicativos obrigatórios e não permitidos para usuários gerenciados são aplicados a usuários secundários criados por meio de DevicePolicyManager#createAndManageUser .

Exemplos de um dispositivo Nexus:

Android 8.x e anterior

pacakages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml

Android 9 e superior

frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml
<resources>
  <!-- A list of apps to be retained on the managed device -->
  <string-array name="vendor_required_apps_managed_device">
    <item>com.android.vending</item> <!--­Google Play -->
    <item>com.google.android.gms</item> <!--­Required by Play -->
    <item>com.google.android.contacts</item> <!--­Google or OEM Contacts­-->
    <item>com.google.android.googlequicksearchbox</item> <!--­Google Launcher -->
    <item>com.google.android.launcher</item> <!--­Google Launcher or OEM Launcher -->
    <item>com.google.android.dialer</item> <!--­Google or OEM dialer to enable making phone calls -->
  </string-array>
</resources>

Android 8.x e anterior

packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml

Android 9 e superior

frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml
<resources>
    <!-- A list of apps to be retained in the managed profile. This includes any Google experience apps required. -->
    <string-array name="vendor_required_apps_managed_profile">
        <item>com.android.vending</item> <!-- Google Play -->
        <item>com.google.android.gms</item> <!-- Required by Play -->
        <item>com.google.android.contacts</item> <!-- Google or OEM Contacts -->
    </string-array>
</resources>

Requisitos do lançador

Você deve atualizar o Launcher para suportar aplicativos de crachá com o emblema do ícone (fornecido no AOSP para representar os aplicativos gerenciados) e outros elementos da interface do usuário do emblema, como recentes e notificações. Se você usar o launcher3 no AOSP sem modificações, então provavelmente você já suporta este recurso de emblema.

Requisitos NFC

Dispositivos com NFC devem habilitar NFC durante a experiência inicial (ou seja, assistente de configuração) e ser configurados para aceitar intenções de provisionamento gerenciado:

packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool>
<item>application/com.android.managedprovisioning</item>

Requisitos de configuração

Dispositivos que incluem uma experiência pronta para uso (isto é, assistente de configuração) devem implementar o provisionamento do proprietário do dispositivo. Quando a experiência pronta para uso é aberta, ela deve verificar se outro processo (como o provisionamento do proprietário do dispositivo) já concluiu a configuração do usuário e, em caso afirmativo, ele deve disparar uma intenção inicial e finalizar a configuração. Essa intenção é capturada pelo aplicativo de provisionamento, que então passa o controle para o proprietário do dispositivo recém-configurado.

Para atender aos requisitos de configuração, adicione o seguinte código à atividade principal de configuração do dispositivo:

@Override
   protected void onStart() {
        super.onStart();

        // When returning to a setup wizard activity, check to see if another setup process
        // has intervened and, if so, complete an orderly exit
        boolean completed = Settings.Secure.getInt(getContentResolver(),
                Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
        if (completed) {
           startActivity(new Intent(Intent.ACTION_MAIN, null)
                .addCategory(Intent.CATEGORY_HOME)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED));
           finish();
       }

       ...
   }