para la versión 4 de Android (API 14 en adelante), es posible utilizar: getWindow(). SetType (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
Sin embargo, en el emulador, no bloquea el botón de inicio, por lo que es un poco inútil. aún no sé si funciona bien en dispositivos reales.
quizás es posible utilizar la siguiente solución: configure la aplicación como la aplicación de pantalla de inicio predeterminada. si se presionó el botón de inicio mientras la aplicación estaba activa, captúrelo y no haga nada. si se presionó el botón de inicio mientras la aplicación estaba en segundo plano (o cerrada), abra la aplicación de inicio predeterminada seleccionada anteriormente.
Como alternativa, podría pedirle al usuario que configure la aplicación de inicio predeterminada como la mía cada vez que se inicie, y restablecerla de nuevo (ya sea a la anterior, o al reinicio total) después de que se cierre.
¿es posible? si es así, ¿cómo?
Desde Android Lollipop (versión 5.0, que es API 21), hay una forma de la pantalla-pinning, y esto se puede activar por el usuario o la aplicación (enlace here):
Hay dos formas de activar la fijación de pantalla:
manualmente: los usuarios pueden habilitar fijar pantalla en Ajustes> Seguridad> fijar pantalla, y seleccionar las tareas que desea anclar tocando el icono de contacto verde en la pantalla recientes al. Programado: para activar la fijación de la pantalla mediante programación, llame a startLockTask() desde su aplicación. Si la aplicación solicitante no es propietaria del dispositivo, se solicita al usuario la confirmación . Una aplicación de propietario de dispositivo puede llamar al método setLockTaskPackages() para permitir que las aplicaciones se puedan pintar sin la confirmación del usuario paso.
¿Qué hace? leer más y ver:
Cuando bloqueo tarea es activa, el siguiente comportamiento sucede:
La barra de estado está en blanco, y las notificaciones de usuario e información de estado están ocultos. Los botones Inicio y Aplicaciones recientes están ocultos. Otras aplicaciones no pueden lanzar nuevas actividades. La aplicación actual puede iniciar nuevas actividades , siempre que al hacerlo no cree nuevas tareas. Cuando el titular de un dispositivo invoca la pantalla , el usuario permanece bloqueado en su aplicación hasta que la aplicación llame a stopLockTask(). Si la fijación de pantalla es actividad por otra aplicación que no es propietaria del dispositivo o por el usuario directamente, el usuario puede salir manteniendo presionados los botones Atrás y Recientes.
No sólo eso, pero de acuerdo con this post, también puede alternar este usuario sin confirmación, y salir de este estado especial estaría bajo la lógica de su aplicación.
Parece la aplicación perfecta para niños seguros.
¿Cómo estás bloqueando las prensas de la tecla de inicio? – slayton
@slayton ¿has probado lo que acabo de escribir? está escrito en la clase de actividad. –
@androiddeveloper también recibo el mismo error en mi aplicación y también estoy usando el mismo código en AtchedTowindow() ... ¿cómo resolvió este problema? –