Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implementación de la gestión de dispositivos

Esta sección describe cómo habilitar y validar las funciones de administración de dispositivos necesarias para preparar los dispositivos para los perfiles administrados. También cubre casos de usuarios de propietarios de dispositivos que son esenciales en un entorno corporativo.

Además del código AOSP, un dispositivo requiere los siguientes componentes para funcionar con perfiles administrados.

Requerimientos generales

Los dispositivos que pretenden admitir la gestión de dispositivos deben cumplir los siguientes requisitos generales.

Valores térmicos de HAL

Android 7.0 y versiones posteriores incluyen compatibilidad con la API HardwarePropertiesManager, una API de informes de estado y supervisión de dispositivos que permite a las aplicaciones consultar el estado del hardware del dispositivo. Esta API se expone a través de android.os.HardwarePropertiesManager y realiza llamadas a través de HardwarePropertiesManagerService al hardware HAL térmico ( hardware/libhardware/include/hardware/thermal.h ). Es una API protegida, lo que significa que solo las aplicaciones Device Policy Controller (DPC) del propietario del dispositivo / perfil y el VrListenerService actual pueden llamarlo.

Para admitir la API de HardwarePropertiesManager, la implementación de HAL térmica del dispositivo debe poder informar los siguientes valores:

Valor Escala de informes Habilita
Temperatura de [CPU | GPU | Batería | Diseño del dispositivo] Temperatura del componente en grados Celsius Las aplicaciones pueden verificar las temperaturas del dispositivo y las temperaturas de aceleración / apagado de los componentes
Tiempos de CPU activa / total habilitada Tiempo en milisegundos Las aplicaciones pueden verificar el uso de la CPU por núcleo
Velocidad del ventilador RPM Las aplicaciones pueden verificar la velocidad del ventilador

Las implementaciones deben manejar correctamente las situaciones de informes de valores cuando un núcleo (o GPU, batería, ventilador) se desconecta o se conecta / desconecta.

Sin poca RAM

El dispositivo no debe ser un dispositivo con poca RAM, lo que significa que no se debe definir ro.config.low_ram . El marco limita automáticamente el número de usuarios a 1 cuando se define el indicador low_ram .

Característica de usos

Los dispositivos deben definir la siguiente uses-feature :

android.software.managed_users
android.software.device_admin

Para confirmar que estos valores de uses-feature se han definido en un dispositivo, ejecute: adb shell pm list features .

Solo aplicaciones esenciales

De forma predeterminada, solo las aplicaciones esenciales para el funcionamiento correcto del perfil deben habilitarse como parte del aprovisionamiento de un dispositivo administrado. Los OEM deben asegurarse de que el perfil o dispositivo administrado tenga todas las aplicaciones necesarias 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

Las aplicaciones requeridas y no permitidas para usuarios administrados se aplican a usuarios secundarios creados a través de DevicePolicyManager#createAndManageUser .

Ejemplos de un dispositivo Nexus:

Android 8.xy versiones anteriores

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

Android 9 y 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.xy versiones anteriores

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

Android 9 y 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 del lanzador

Debe actualizar el Launcher para que admita aplicaciones de credenciales con la credencial de icono (proporcionada en AOSP para representar las aplicaciones administradas) y otros elementos de la interfaz de usuario de la credencial, como recientes y notificaciones. Si usa launcher3 en AOSP sin modificaciones, es probable que ya sea compatible con esta función de identificación.

Requisitos de NFC

Los dispositivos con NFC deben habilitar NFC durante la experiencia lista para usar (es decir, el asistente de configuración) y estar configurados para aceptar intenciones de aprovisionamiento administradas:

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

Requisitos de instalación

Los dispositivos que incluyen una experiencia lista para usar (es decir, un asistente de configuración) deben implementar el aprovisionamiento del propietario del dispositivo. Cuando se abre la experiencia lista para usar, debe verificar si otro proceso (como el aprovisionamiento del propietario del dispositivo) ya ha finalizado la configuración del usuario y, de ser así, debe activar un intento doméstico y finalizar la configuración. Esta intención es detectada por la aplicación de aprovisionamiento, que luego entrega el control al propietario del dispositivo recién configurado.

Para cumplir con los requisitos de configuración, agregue el siguiente código a la actividad principal de la configuración del 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();
       }

       ...
   }