Esta sección describe cómo habilitar y validar las funciones de administración de dispositivos necesarias para preparar dispositivos para 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 HAL térmicos
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 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 |
CPU activa / total de tiempos habilitados | Tiempo en milisegundos | Las aplicaciones pueden verificar el uso de 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 está conectado / desconectado.
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 requeridas 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 inmediata (es decir, el asistente de configuración) y estar configurados para aceptar las 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 una intención de inicio 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(); } ... }