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

12

Esta pregunta de StackOverflow explora cómo habilitar la aplicación del propietario del dispositivo y, por lo tanto, el modo quiosco, en la vista previa del desarrollador de Android L. Como el método requiere una compilación de Android de depuración del usuario, rootear el dispositivo y copiar un archivo XML en el sistema de archivos raíz, no parece adecuado para la implementación masiva de un dispositivo Android de una sola función dentro de una empresa.

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

Adrian Cox
fuente
¿Has resuelto el problema?
KOTIOS
Gracias @Spynet: ese parece ser el resumen más completo de la solución.
Adrian Cox
1
echa un vistazo aquí para una buena guía con src: objectpartners.com/2014/11/04/…
Hayden Thring

Respuestas:

14

( Editar: actualizado después de algunas pruebas más)

Consulte la última documentación .

Esta característica parece llamarse Fijar pantalla ahora, y la aplicación no tiene que ser el propietario del dispositivo. Si el propietario del dispositivo no está configurado, se le solicitará al usuario que acepte. Pero hay problemas con esto para el uso de quioscos, que se mencionan a continuación.

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

Manualmente: los usuarios pueden habilitar la fijación de pantalla en Configuración> Seguridad> Fijación de pantalla, y seleccionar las tareas que desean fijar tocando el icono de fijación verde en la pantalla reciente. 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 solicita confirmación al usuario. La aplicación del propietario del dispositivo puede llamar al método setLockTaskPackages () para permitir que las aplicaciones se puedan pintar sin el paso de confirmación del usuario.

Si activa la fijación de la pantalla mediante programación (aplicación que no es del propietario del dispositivo) o en el dispositivo usando el pin en los recientes, obtendrá el siguiente comportamiento:

Aparece un cuadro de diálogo que le pregunta al usuario si desea habilitar la fijación de pantalla y si desea solicitar una contraseña para salir. Si presionan Sí, la barra de estado y las notificaciones desaparecen, los botones Atrás, Inicio y Recientes NO desaparecen. Al tocar en la página de inicio o en los recientes, aparece un brindis que informa al usuario cómo salir de la fijación de la pantalla.

Luego, el usuario puede mantener presionada la tecla y retrocede para salir de la fijación de pantalla. Si el usuario seleccionó solicitar una contraseña, será expulsado directamente a la pantalla de bloqueo. Este comportamiento significa que no es adecuado para un kiosco imo. Como es demasiado fácil para los usuarios de quioscos terminar mirando la pantalla de bloqueo.

Para obtener un modo de quiosco adecuado, debemos configurar el propietario del dispositivo. La documentación de Google dice que necesita hacer esto con NFC:

Para implementar y activar el propietario de un dispositivo, debe realizar una transferencia de datos NFC desde una aplicación de programación al dispositivo mientras el dispositivo está en su estado no aprovisionado.

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

Pero para confirmar que el comportamiento es el esperado si arraiga un dispositivo, puede configurar el propietario del dispositivo según las instrucciones anteriores de Google (agregando un device_owner.xml) como mencioné aquí

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

El siguiente fragmento activa la cerradura:

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");
}
tagy22
fuente
Creo que esta es la mejor respuesta posible disponible en este momento. El paso de NFC sigue siendo un misterio, pero es una pregunta mucho más estrecha.
Adrian Cox
He estado tratando de hacer que funcione el paso NFC pero no tuve ningún éxito, comencé 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 del quiosco aquí
tagy22
1

No puedo comentar sobre una respuesta que es un poco molesta pero complementaria a la respuesta de tagy22 que puedes usar dpmpara configurar el propietario del dispositivo. Más detalles aquí .

Troy Patrick
fuente
1
dpmno haría el trabajo si una cuenta (como la cuenta de Google) está configurada en el dispositivo.
Señor del fuego
Sin embargo, ¿será NFC en ese caso? Tenía la impresión de que era necesario configurar un propietario del dispositivo antes de que se agregara un período de cuenta.
Troy Patrick