Esta sección describe cómo habilitar y validar las funciones de administración de dispositivos requeridas 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 destinados a admitir la administración de dispositivos deben cumplir los siguientes requisitos generales.
Valores HAL térmicos
Android 7.0 y versiones posteriores incluyen soporte para la API de HardwarePropertiesManager, una API de informes de salud y monitoreo de dispositivos que permite que las aplicaciones consulten 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
a la HAL térmica de hardware ( hardware/libhardware/include/hardware/thermal.h
). Es una API protegida, lo que significa que solo las aplicaciones del controlador de políticas de dispositivo (DPC) del propietario del dispositivo/perfil y el VrListenerService
actual pueden llamarla.
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|Piel 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 la CPU por núcleo |
Velocidad del ventilador | RPM | Las aplicaciones pueden comprobar la velocidad del ventilador |
Las implementaciones deben manejar correctamente las situaciones de valores de informes cuando un núcleo (o GPU, batería, ventilador) se desconecta o se conecta/desconecta.
Habilitación de la administración de dispositivos
Para habilitar la administración de dispositivos, asegúrese de que se declaren los siguientes uses-features
:
-
android.software.device_admin
-
android.software.managed_users
(la característica se declara si y solo si el dispositivo tiene al menos 2 GB de memoria).
Para confirmar que estos valores uses-feature
se hayan declarado en un dispositivo, ejecute: adb shell pm list features
.
Solo aplicaciones esenciales
De manera predeterminada, solo las aplicaciones esenciales para el correcto funcionamiento del perfil están habilitadas como parte del aprovisionamiento de un dispositivo administrado. Tenga en cuenta que todas las instancias de ejemplo de los archivos _managed_profile.xml
a continuación solo son relevantes si se declara android.software.managed_users
. 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 mediante DevicePolicyManager#createAndManageUser
.
Ejemplos de un dispositivo Nexus
Android 8.x y 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.x y 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 Iniciador para que admita aplicaciones de credencialización con el icono de credencial (proporcionado en AOSP para representar las aplicaciones administradas) y otros elementos de la interfaz de usuario de credencial, como recientes y notificaciones. Si usa launcher3 en AOSP sin modificaciones, es probable que ya admita esta función de credencialización.
Requisitos 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 intentos de aprovisionamiento administrado:
packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool> <item>application/com.android.managedprovisioning</item>
Requisitos de configuración
Los dispositivos que incluyen una experiencia lista para usar (es decir, 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 finalizó 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 captada 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 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(); } ... }