Android: no se puede volver a habilitar el bloqueo de teclado después de deshabilitarlo

Estoy tratando de crear una opción (usando las preferencias de la casilla de verificación) en mi aplicación para que el usuario deshabilite y vuelva a habilitar la pantalla de bloqueo. Uso disabledKeyguard() para deshabilitar la pantalla de bloqueo y funciona perfectamente, pero no puedo volver a habilitar Keyguard() para que funcione. El código es bastante simple, no sé por qué no funciona.

public void onSharedPreferenceChanged(SharedPreferences taskprefs,
        String tasks_pref) {
    boolean skiplock = taskprefs.getBoolean("pref_skiplock", false);
    boolean screentimeout = taskprefs.getBoolean("pref_screentimeout",
            false);

    skiplock(skiplock);

    // Log.v("TaskActivity", "Skiplock value is " + skiplock);
    // Log.v("TaskActivity", "ScreenTimeout value is " + screentimeout);
}

private void skiplock(boolean action) {
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    //
    if (action == true) {
        lock.disableKeyguard();
        Toast.makeText(getApplicationContext(), "Lockscreen Disabled",
                Toast.LENGTH_SHORT).show();
    }
    //
    else if (action==false) {
        lock.reenableKeyguard();
        Toast.makeText(getApplicationContext(), "Lockscreen Enabled",
                Toast.LENGTH_SHORT).show();
    }
}

preguntado el 22 de mayo de 12 a las 09:05

encontraste la solucion.?? Tengo el mismo problema. -

@QadirHussain Sí, publicó la respuesta a continuación. -

1 Respuestas

El problema era que se crea (declara) un nuevo objeto Keyguard dentro del método skiplock() cada vez que se llama. Una solución simple es declarar el bloqueo de teclado como un objeto global y referirse a ese único objeto para que su estado no se restablezca cuando el método termine de ejecutarse.

En resumen, solo use "KeguardLock lock" y "KeyguardManager keyguardManager" como constructores globales.

respondido 11 mar '13, 19:03

He hecho una pregunta aquí. stackoverflow.com/questions/15338400/… por favor, eche un vistazo aquí. y actualice mi código como su respuesta. Haré que sea una respuesta aceptada. Gracias - qadir hussein

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.