( 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
¿has solucionado el problema?
1 votos
Comprueba esto stackoverflow.com/questions/26906210/
0 votos
Gracias @Spynet - ese parece ser el resumen más completo de la solución.
1 votos
Echa un vistazo aquí para una buena guía con src: objectpartners.com/2014/11/04/