En esta guía, se describe cómo desarrollar un controlador de política de dispositivo (DPC) para en una implementación empresarial de Android. Una app de DPC, conocida anteriormente Como controlador de políticas de trabajo, controla las políticas de dispositivos locales y el sistema. aplicaciones en los dispositivos.
Información acerca de los DPC
En una implementación empresarial de Android, una empresa mantiene el control de de los dispositivos del usuario, como el aislamiento información de la infraestructura de los usuarios datos personales y preconfigurar apps aprobadas para el entorno o inhabilitar las funciones del dispositivo (por ejemplo, la cámara).
Como EMM, desarrollas una app para DPC que los clientes pueden usar en junto con tu consola de EMM y servidor. Tu cliente implementa el DPC en los dispositivos de los usuarios que administra. El DPC actúa como un puente entre la consola (y el servidor) de EMM y el dispositivo. Un administrador usa la consola de EMM para realizar diversas tareas, como las siguientes: configurar los dispositivos y las apps.
El DPC crea y administra el perfil de trabajo en el dispositivo en el que está instalado. El perfil de trabajo encripta la información relacionada con el trabajo y la mantiene separada de de los usuarios aplicaciones y datos personales. Antes de crear el perfil de trabajo, el DPC también puede aprovisionar una cuenta de Google Play administrada para usar en el dispositivo.
En esta guía, se muestra cómo desarrollar un DPC que pueda crear y administrar perfiles de trabajo.
Biblioteca de compatibilidad de DPC para EMM
La biblioteca de compatibilidad de DPC para EMM incluye clases de utilidades y auxiliares que facilitar el aprovisionamiento y la administración de los dispositivos Android en una empresa, en un entorno de nube. La biblioteca te permite aprovechar las funciones importantes de tu Apps para DPC:
- Compatibilidad con el aprovisionamiento de cuentas de Google Play administrado: Aprovisionamiento administrado Las Cuentas de Google Play de la app para DPC requieren que Google Play y Google Las apps de Servicios de Play cumplen con los requisitos mínimos de versión. Sin embargo, actualizar estas apps puede ser complejo. La biblioteca de compatibilidad de DPC se encarga de actualizar estos y garantiza la compatibilidad con las actualizaciones futuras de la cuenta de servicio Proceso de aprovisionamiento de las cuentas de Play. Consulte las cuentas de Google Play administradas aprovisionamiento de recursos para obtener más detalles.
- Compatibilidad con configuraciones administradas: Usar la API de EMM de Play para controlar las configuraciones administradas de las apps aprobadas es la la forma más sencilla de implementar configuraciones administradas en tu DPC. Compatibilidad con DPC La biblioteca te permite delegar a Google Play la tarea de aplicar la administración parámetros de configuración (anteriormente, restricciones de apps) establecidos por el administrador con tu EMM de Cloud. Usar la API de Play EMM para controlar las configuraciones administradas permite que la configuración de la app se aplique automáticamente durante la instalación. Consulta Aplica parámetros de configuración administrados. en las apps de trabajo para obtener más información sobre cómo habilitar esta función en tu DPC.
Sigue los pasos que se indican a continuación para descargar la biblioteca. Las tareas que se detallan en esta guía se da por sentado que se usa la biblioteca de compatibilidad de DPC.
Descarga la biblioteca de compatibilidad de DPC
Para usar la biblioteca de compatibilidad de DPC, descárgala de la comunidad de proveedores de EMM de Android Enterprise. Debes agregar la biblioteca al archivo build.gradle y ocuparte de otras las dependencias cuando compiles tu app de DPC. Por ejemplo, la biblioteca requiere la versión 11.4.0 Biblioteca cliente de autenticación de los Servicios de Google Play
- Agrega la biblioteca al archivo
build.gradle
:
Groovy
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- Agregar 11.4.0
La biblioteca cliente de autenticación de los Servicios de Google Play al archivo build.gradle:
Groovy
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
La biblioteca requiere ciertos permisos para ejecutarse, por lo que debes agregarlos a El manifiesto de tu app de DPC cuando la subes a Google Play:
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Además de estos pasos preliminares de implementación y configuración, inicializamos la funcionalidad específica de la biblioteca en tu código DPC, según el y la capacidad que quieres implementar. Los detalles se incluyen en el repositorio secciones a continuación.
Crea un DPC
Compila tu DPC en el modelo existente que se usa para las aplicaciones de administración de dispositivos.
Específicamente, tu app debe crear una subclase de
DeviceAdminReceiver
(una clase de android.app.admin
)
paquete), como se describe en
Administración del dispositivo.
Crea un perfil de trabajo
Para ver un ejemplo que muestra cómo crear un perfil de trabajo básico, consulta BasicManagedProfile en GitHub.
Para crear un perfil de trabajo en un dispositivo que ya tiene un perfil personal, haz lo siguiente:
primero averigua si el dispositivo es compatible con un perfil de trabajo.
la existencia del
Función del sistema FEATURE_MANAGED_USERS
:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Si el dispositivo admite perfiles de trabajo, crea uno mediante el envío de un intent. con un ACTION_PROVISION_MANAGED_PROFILE acción. (En algunos documentos, el perfil administrado es una término general que significa lo mismo que perfil de trabajo en el contexto de Android en el ámbito empresarial). Incluye el nombre del paquete de administración de dispositivos como extra:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
Java
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
El sistema responde a este intent de la siguiente manera:
- Verifica que el dispositivo esté encriptado. Si no es así, el sistema solicita que el usuario encripte el dispositivo antes de continuar.
- Crea un perfil de trabajo.
- Quita las aplicaciones no necesarias del perfil de trabajo.
- Copia la app de DPC en el perfil de trabajo y establece el DPC como el propietario del perfil.
Anular
onActivityResult()
por
Consulta si el aprovisionamiento fue exitoso:
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
Java
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
Termina de habilitar el perfil de trabajo
Cuando se aprovisiona el perfil, el sistema llama al DPC
DeviceAdminReceiver.onProfileProvisioningComplete()
de la app. Anular
este método de devolución de llamada para terminar de habilitar el perfil de trabajo.
Un DeviceAdminReceiver.onProfileProvisioningComplete()
típico
una implementación de devolución de llamada hace lo siguiente:
- Verifica que el dispositivo cumpla con las políticas de dispositivo de EMM, como que se describe en Cómo configurar políticas de dispositivos.
- Habilita las aplicaciones del sistema que creó el administrador
disponibles en el perfil de trabajo con
DevicePolicyManager.enableSystemApp()
. - Si el dispositivo usa Google Play administrado, se agrega la cuenta adecuada a
el perfil de trabajo para que las apps aprobadas se puedan instalar en el dispositivo.
- Cuentas de Google Play administrado: Consulta Cómo garantizar el funcionamiento entorno para cuentas de Google Play administradas y Agrega una cuenta de Google Play administrada para conocer los detalles.
- Cuentas de Google: Usa
AccountManager.addAccount()
.
Activa el perfil de trabajo
Cuando hayas completado estas tareas, llama al administrador de políticas
setProfileEnabled()
para activar el perfil de trabajo:
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
Java
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
Configura las políticas de dispositivo
La aplicación de DPC aplica las políticas de dispositivo establecidas por un administrador para cumplir con un de los requisitos y restricciones de tu organización. Por ejemplo, la política de seguridad podría exigir que los dispositivos se bloqueen después de una cierta cantidad de intentos de contraseña fallidos. El DPC consulta las políticas actuales a la consola de EMM y, luego, las aplica con la opción Device Administration.
Para obtener información sobre cómo aplicar políticas de dispositivo, consulta Políticas
Aplica configuraciones administradas a apps de trabajo
Los parámetros de configuración administrados te permiten brindar a tus clientes la capacidad de realizar lo siguiente: configurar previamente las apps para las cuales se aprobó su implementación y actualizarlas apps fácilmente cuando la configuración deba cambiar. Configurar una app antes de de la implementación garantiza que se cumplan la seguridad de la organización y otras políticas después de instalar la app en el dispositivo de destino.
El desarrollador de la app define las capacidades de la app en un esquema XML (el esquema de configuraciones administradas) que acompaña a la app cuando se sube a Google Play (para desarrolladores de apps, consulta Cómo configurar configuraciones administradas para obtener más información).
Recuperas este esquema desde la app para mostrárselo a los administradores de clientes en tu consola de EMM, proporciona una IU en la que las diversas opciones definidas en el y permitir que los administradores preestablezcan los parámetros de configuración de la app. Por lo general, la configuración administrada resultante que establece el administrador se almacenan en el servidor EMM, que luego usa Reproducir la API de EMM para configurar Configuración administrada para el dispositivo o Managedconfigurationsforuser. Consulta Configuraciones administradas a través de Play para obtener más información.
Las configuraciones administradas se pueden aplicar a la app a través de la API de Play EMM (enfoque recomendado) o directamente desde el DPC (descrito en Aplicar configuraciones administradas) directamente desde el DPC). Cómo usar la API de Play EMM tiene varias ventajas, incluida una implementación sencilla, ya que permite usar la Biblioteca de compatibilidad de DPC para simplificar las tareas de DPC Además, la API de EMM de Play tiene las siguientes características:
- Establece la configuración de forma atómica cuando se instala una app nueva, lo que garantiza que la app esté lista la primera vez que el usuario la inicie.
- Te permite administrar la configuración por usuario, por lo que no debes supervisar el aprovisionamiento por dispositivo.
Aplica configuraciones administradas con el API de Play EMM
Para usar la API de Play EMM para configuraciones administradas, el DPC debe permitir Google Play para establecer configuraciones. La biblioteca de compatibilidad de DPC se encarga de esto. tarea por ti a través de un proxy de la configuración que envía Google Play.
Para usar Play API de EMM, descarga la biblioteca de compatibilidad de DPC y habilita la compatibilidad con configuraciones administradas en tu DPC.
Habilita la compatibilidad con Configuraciones administradas en tu DPC
Importa esta clase en tu DPC:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
Inicializa la biblioteca de configuraciones administradas. En este ejemplo, “admin” es el ComponentName de DeviceAdminReceiver.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
Habilita las configuraciones administradas:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
Con esta biblioteca inicializada en tu DPC, puedes usar el API de Google Play EMM en tu EMM consola y servidor para aplicar configuraciones administradas a apps aprobadas, en lugar de la codificación de estas tareas directamente en el DPC. Consulta Configuraciones administradas a través de Play para obtener más detalles.
Aplica configuraciones administradas directamente desde el DPC
Para cambiar los ajustes de configuración de una app directamente desde el DPC, llama al Método DevicePolicyManager.setApplicationRestrictions() y pasar parámetros para la app de DPC DeviceAdminReceiver, el nombre del paquete de la app de destino, y el Bundle que contiene la configuración administrada de la app según lo establecido por el administrador. Consulta Cómo se Interactúan el DPC y la consola de EMM y establece parámetros de configuración administrados para obtener más detalles. Sin embargo, Ten en cuenta que este enfoque alternativo a la aplicación de aplicaciones no se recomienda en implementaciones de Cuentas de Google Play administradas.
Aprovisionamiento de cuentas de Google Play administrado asistencia
La biblioteca de compatibilidad de DPC incluye compatibilidad para aprovisionar cuentas de Google Play administradas. Para usar esta compatibilidad, primero debes inicializar el archivo y, luego, puedes asegurarte de que entorno de trabajo y Agrega un cuenta de Google Play administrada.
Inicializa cuentas de Google Play administradas en tu DPC
Importa esta clase en tu DPC:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
Inicializa la biblioteca de compatibilidad de aprovisionamiento. En este ejemplo, “administrador”
el ComponentName
de
DeviceAdminReceiver
.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
Garantizar el entorno de trabajo para cuentas de Google Play administradas
Después de que el DPC aprovisione un dispositivo en el modo de propietario del perfil (ACTION_PROVISION_MANAGED_PROFILE
) o en un dispositivo
modo propietario (ACTION_PROVISION_MANAGED_DEVICE
); asegúrate de que el dispositivo sea compatible con las cuentas de Google Play administradas llamando al siguiente número:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
La devolución de llamada informa el éxito o el fracaso de este proceso. Cuando se envía la devolución de llamada correctamente, se puede agregar una cuenta de Google Play administrado. Si si la devolución de llamada informa un error, solicita al usuario que se asegure de que el dispositivo tenga una conexión de red (por ejemplo, si falla la descarga). En otro informar el error a Google.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
Java
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
Agrega una cuenta de Google Play administrado
El AccountManager
del framework de Android
puedes agregar una cuenta de Google Play administrada a un dispositivo. Para simplificar la interacción con
AccountManager
, usa la función auxiliar (que se muestra en el siguiente ejemplo)
de la biblioteca de compatibilidad de DPC. La función
maneja el token que devuelve el servidor de Google Play y facilita el aprovisionamiento
la cuenta de Google Play administrado. La función se muestra cuando Google Play administrado
La cuenta se encuentra en un estado válido:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
: el token de autenticación del usuario que genera el Reproducir la llamadaUsers.generateAuthenticationToken()
a la API de EMMaccountAddedCallback
: Devuelve la cuenta de Google Play administrada. que se agregó correctamente al dispositivo. Esta devolución de llamada debe incluironAccountReady()
yonFailure()
.
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
Java
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
Documentación relacionada
- Para obtener más información sobre la API de administración de dispositivos, consulta Dispositivo Administración.
- Para obtener más información sobre los métodos de aprovisionamiento de Android Enterprise, consulta Aprovisionar dispositivos en la Guía para desarrolladores de Android Enterprise
- Para ver una muestra de GitHub que demuestre cómo crear un perfil de trabajo básico, consulta BasicManagedProfile.
- Aquí encontrarás una muestra de GitHub en la que se demuestra cómo establecer parámetros de configuración en otras apps como una propietario del perfil, consulta AppRestrictionEnforcer.