14 votos

Cómo activar el bloqueo de tareas en dispositivos de producción Android 5.0

Esta pregunta de StackOverflow explora cómo habilitar una aplicación de propietario de dispositivo, y por tanto el modo quiosco, en la vista previa para desarrolladores de Android L. Como el método requiere una compilación userdebug de Android, rootear el dispositivo y copiar un archivo XML en el sistema de archivos root, no parece adecuado para el despliegue masivo de un dispositivo Android con una única función dentro de una empresa.

¿Cómo se instalarán las aplicaciones del propietario del dispositivo en los dispositivos Android L de producción?

0 votos

¿has solucionado el problema?

1 votos

0 votos

Gracias @Spynet - ese parece ser el resumen más completo de la solución.

15voto

tagy22 Puntos 56

( Edita: Actualizado tras algunas pruebas más)

Compruebe el última documentación .

Esta función parece que ahora se llama Screen pinning, y la App no tiene por qué ser la propietaria del dispositivo. Si el propietario del dispositivo no está establecido, se pedirá al usuario que acepte. Pero hay problemas con esto para el uso de quiosco, se menciona a continuación.

Hay dos formas de activar la fijación de pantalla:

Manualmente: Los usuarios pueden activar la fijación de pantalla en Configuración > Seguridad > Anclar pantalla, y seleccionar las tareas que desean anclar tocando el icono icono verde en la pantalla de favoritos. Programáticamente: Para activar la fijación de pantalla mediante programación, llame a startLockTask() desde su aplicación. Si la aplicación solicitante no es propietaria del dispositivo, se pedirá confirmación al usuario. confirmación. Una aplicación propietaria de un dispositivo puede llamar al método setLockTaskPackages() para permitir que las aplicaciones se puedan bloquear sin el paso de confirmación del usuario. paso.

Si activas el pin de pantalla programáticamente (App no propietaria del dispositivo) o en el dispositivo usando el pin en los recents obtienes el siguiente comportamiento:

Aparece un cuadro de diálogo en el que se pregunta al usuario si desea activar la fijación de pantalla y si desea exigir una contraseña para salir. Si pulsa "Sí", la barra de estado y las notificaciones desaparecen; los botones "Atrás", "Inicio" y "Recientes" NO desaparecen. Al pulsar sobre Inicio o Recientes, aparece un mensaje informando al usuario de cómo salir de la fijación de pantalla.

El usuario puede mantener pulsadas las teclas Atrás y Recientes para salir de la fijación de pantalla. Si el usuario seleccionó requerir una contraseña, será enviado directamente a la pantalla de bloqueo. Este comportamiento significa que no es adecuado para un quiosco imo. Es demasiado fácil que los usuarios de quioscos acaben mirando la pantalla de bloqueo.

Para obtener un modo quiosco adecuado necesitamos establecer el propietario del dispositivo. La documentación de Google dice que hay que hacerlo con NFC:

Para desplegar y activar un propietario de dispositivo, debe transferencia de datos NFC desde una aplicación de programación al dispositivo su estado no aprovisionado.

El uso de NFC para hacer esto parece un poco complejo (¿qué pasa si un dispositivo no tiene NFC?). No he investigado esto todavía, así que si alguien puede proporcionar información sobre cómo se va a establecer el propietario del dispositivo por NFC? Que ahora se convierte en el punto principal de su pregunta. (es decir, establecer el propietario del dispositivo en un dispositivo no rooteado)

Pero para confirmar que el comportamiento es el esperado si Rooteas un dispositivo puedes establecer el propietario del dispositivo según las instrucciones previas de Google (añadiendo un device_owner.xml) como he mencionado aquí

Ahora puede bloquear correctamente la aplicación, no aparece ningún cuadro de diálogo para que el usuario acepte, cuando se activa, los recents y el botón de inicio desaparecen y el usuario no puede salir de la aplicación a menos que su aplicación se desbloquee sola. Un modo quiosco adecuado. He probado esto en un Nexus 7 2013 con la última build de Lollipop.

El siguiente fragmento activa el bloqueo:

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}

0 votos

Creo que ésta es la mejor respuesta posible en este momento. El paso de la NFC sigue siendo un misterio, pero es una cuestión mucho más estrecha.

0 votos

He estado tratando de conseguir el paso NFC de trabajo, pero no tuvo ningún éxito, empecé una pregunta sobre esto aquí . También hay una solicitud de función con Google para mejorar la fijación de la pantalla para el uso de quiosco aquí

2voto

sv_in Puntos 5297

No puedo comentar una respuesta que es un poco molesta pero complementariamente a la respuesta de tagy22 puedes usar dpm para establecer el propietario del dispositivo. Más información aquí .

1 votos

dpm no funcionaría si una cuenta (como la de Google) está configurada en el dispositivo.

0 votos

¿Será NFC en ese caso? Tenía la impresión de que era necesario establecer un propietario del dispositivo antes de añadir una cuenta.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X