Devolver un resultado de error en inKeyguardRestrictedInputMode ()

Tengo una función para determinar cuatro estados de la pantalla del teléfono: pantalla encendido, pantalla apagada, pantalla encendido con la cerradura, pantalla encendido sin la cerradura. Mi función es

private KeyguardManager keyguardManager; public String getScreenStatus() { String sreen_State="unknown"; keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { if (pm.isInteractive()) { sreen_State="screen_on"; if(!keyguardManager.inKeyguardRestrictedInputMode()) { sreen_State="screen_on_no_lock_screen"; }else{ Log.i(TAG, "screen_on_lock_screen"); sreen_State="screen_on_lock_screen"; } } else { sreen_State="screen_off"; } } else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT_WATCH){ if(pm.isScreenOn()){ sreen_State="screen_on"; if(!keyguardManager.inKeyguardRestrictedInputMode()) { Log.i(TAG, "screen_on_no_lock_screen"); sreen_State="screen_on_no_lock_screen"; }else{ Log.i(TAG, "screen_on_lock_screen"); sreen_State="screen_on_lock_screen"; } } else { mIsScreenOn=false; sreen_State="screen_off"; } } return sreen_State; } 

La función anterior devuelve estados corregidos de la pantalla. Sin embargo, tiene error cuando agrego un código más como sigue:

  KeyguardManager.KeyguardLock kl = keyguardManager.newKeyguardLock("MyKeyguardLock"); if(index.equals("1")) kl.disableKeyguard(); else if(indexequals("2")) kl.reenableKeyguard(); getScreenStatus(); 

El índice puede cambiar pulsando un botón. Ahora, el estado equivocado de la pantalla es suceder. Siempre devuelve screen_on_lock_screen , aunque la pantalla esté en screen_on_no_lock_screen . ¿Cómo podría solucionar mi problema?

Utilizando KeyguardManager.NewKeyguardLock está obsoleto desde el nivel 13 de la API. ¿Lo intentó con FLAG_DISMISS_KEYGUARD y FLAG_SHOW_WHEN_LOCKED de WindowManager.LayoutParams.

Esta clase ha quedado obsoleta en el nivel API 13. Utilice FLAG_DISMISS_KEYGUARD y / o FLAG_SHOW_WHEN_LOCKED; Esto le permite ocultar perfectamente el bloqueo de teclado a medida que su aplicación se mueve dentro y fuera del primer plano y no requiere que se soliciten permisos especiales. > Handle devuelto por newKeyguardLock (String) que le permite inhabilitar el bloqueo de teclado.

Aquí el enlace forma la documentación de Android .

¡Espero eso ayude!

  • ¿Está garantizado un servicio android para llamar a onDestroy ()?
  • ¿Cómo encontrar las aplicaciones en ejecución en programación en android?
  • Servicio enlazado de Android: ¿debo reconectar manualmente en onServiceDisconnected o intento reconectar automáticamente?
  • ¿Es correcto llamar a Service.startService () desde Service.onBind ()?
  • El servicio de Android no se reinicia en lollipop
  • Puede AlarmManager (alarm.setRepeating) trabajo en caso de reinicio del teléfono - Android
  • Android - Notificación incorrecta publicada - No se pudo expandir RemoteViews para: StatusBarNotification
  • ¿Este patrón de mensajería de Servicio de Actividad causa una pérdida de memoria?
  • Android - Servicio de fondo de juego de Tamagotchi
  • ¿Cómo puedo guardar datos del servicio de Android?
  • ¿Cuándo se destruye un servicio iniciado y enlazado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.