Desbloquear la pantalla de bloqueo

Estoy escribiendo una aplicación para administrar o personalizar la pantalla de desbloqueo de los dispositivos Android. Funciona en los siguientes pasos:

  1. El usuario bloquea la pantalla con el botón de encendido.
  2. El usuario intenta desbloquear la pantalla, presionando de nuevo el botón de encendido
  3. Mi actividad aparece – La pantalla todavía está bloqueada
  4. El usuario contesta una pregunta y si la respuesta es correcta la pantalla se desbloquea

He creado una actividad para el tercer paso y agregado el código siguiente a su onCreate método:

 Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); window.addFlags(WindowManager.LayoutParams.FLAG_SECURE); 

Esto funciona correctamente y exactamente como yo esperaba. Mi problema es con el cuarto paso. He buscado y encontrado una serie de soluciones, pero ninguna de ellas lo están haciendo por mí.

Cómo bloquear / desbloquear el teléfono mediante programación – Esta es sólo una forma de mostrar una actividad en la parte superior de la pantalla de bloqueo. No lo desbloquea.

Bloqueo de pantalla de Android / desbloquear programatically – Esta solución no sólo está obsoleta, pero también es muy poco fiable. No desbloquea la pantalla, pero crea otro bloqueo y lo desbloquea. Así que con esto puedes acceder a las aplicaciones, pero es imposible acceder a las configuraciones sensibles. (¡Intentalo!)

He intentado registrar mi aplicación como administrador de dispositivos. Eso tampoco me ayudó. Puedo cambiar la configuración pero no puedo desbloquear la pantalla.

mehrdadjg

Me pareció Android Api Código fuente (nivel 23) No sé cómo utilizar los métodos de KeyguardService con el administrador de dispositivos o permisos de root, pero Android utilizar este servicio (com.android.systemui.keyguard.KeyguardService.java). Android enlaza este servicio (IPC con el archivo aidl) y lo usa.

El otro lado…

Keyguard, su nombre es KeyguardViewMediator. En el paquete "com.android.systemui.keyguard". (Quizás revise estas líneas 1157, 1433)

No sé cómo realizar una acción de desbloqueo, pero Android utiliza esta clase.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.