2010-11-20 14 views
8

¿Cómo puedo desactivar el bloqueo de teclas cuando un receptor de emisión se activa por screen_on, de modo que cuando ocurre, el usuario ve una actividad que he comenzado detrás de él? (La actividad se está ejecutando ...)Cómo deshabilitar Keyguard y mostrar una actividad al usuario cuando se activa el receptor de SCREEN_ON?

He estado tratando el código siguiente desde un receptor de radiodifusión provocada por fuera de la pantalla ...

KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
myLock = myKeyGuard.newKeyguardLock(); 
myLock.disableKeyguard(); 

No parece estar funcionando, ya que aunque es. Cuando enciendo la pantalla, todavía tengo que desbloquear manualmente el teclado en el teléfono para revelar la actividad detrás de él.

+0

He encontrado algún código que ha utilizado exitKeyguardSecurely() además de esto. Todavía no he podido hacerlo funcionar, así que ahora estoy configurando la bandera FLAG_DISMISS_KEYGUARD para mi actividad. – Ryan

+0

Ryan, ¿puedes compartir tu código? Yo también trabajo en lo mismo. – Manikandan

Respuesta

1

Creo que descubrí lo que hice mal. Parece que fue solo un error de etiqueta en mi manifiesto al usar el permiso disable_keyguard. Está funcionando correctamente ahora que corregí el manifiesto.

+0

agregar este permiso no funciona para mí. Necesito ejecutar mi actividad cuando el usuario presione el botón de desbloqueo. La actividad debería activarse antes de la pantalla de desbloqueo. – Manikandan

5

recomendaría utilizar los indicadores de ventana dismiss_keyguard o show_when_locked si tiene una ventana que debe aparecer en la parte superior de la pantalla de bloqueo justo al despertar.

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SHOW_WHEN_LOCKED

cómo se utiliza este es el siguiente (denominado en onCreate antes de establecer el diseño)

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
+6

Sé que esta es una publicación anterior, pero las banderas no funcionaron para mí, sin importar dónde las coloque, el administrador de bloqueos, por otro lado, siempre parece funcionar. Solo un punto a tener en cuenta para otros lectores – Idistic

+0

Es cierto que usar las banderas es la solución 'recomendada', sin embargo, descubrirá que están lejos de ser perfectas en el uso de la vida real. Por ejemplo, con flags android brevemente 'parpadeará' el bloqueo de teclas al mover la actividad fuera de foco. Es menor, pero rallador. Desactivar completamente el bloqueo de teclas no tiene ese problema. –

+0

Tenga en cuenta que la actividad no puede ser transparente en absoluto. Además, no puede usar el cuadro de diálogo.getWindow() para establecer los indicadores tampoco. Probablemente, esto no permita que una aplicación muestre parcialmente actividades de otras aplicaciones. Consulte este problema https://code.google.com/p/android/issues/detail?id=8778 – aaronvargas

1

que no estoy viendo el trabajo de solución de bloqueo del teclado (y ha estado en desuso). Lo que funciona para mí es tomar un permanente PARTIAL_WAKE_LOCK que nunca publico. Esto evita que el dispositivo se quede realmente dormido y así evita que la pantalla de bloqueo se active.

Luego, cada vez que se apaga la pantalla, escucho esa notificación y reactiva el dispositivo. Funciona en todos los dispositivos en los que he probado.

Me doy cuenta de que esto matará la batería del dispositivo bastante rápido, por lo tanto, tiene que usar esto con moderación y atención.

Cuestiones relacionadas