Отключено Блокировка клавиатуры снова включается после нажатия на уведомление (Android)

На этот вопрос до сих пор нет ответа??? В моем приложении я отключаю блокировку клавиатуры (то есть снимаем экран блокировки), используя приведенный ниже код, и она работает нормально, пока я не нажму на любое уведомление в панели уведомлений. Если я нажму на уведомление, экран блокировки автоматически снова включится. Любая помощь приветствуется.

private void remove_lockscreen() {
    final CheckBoxPreference lock = (CheckBoxPreference) findPreference("remove_lockscreen");
    KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
    KeyguardLock kl = km.newKeyguardLock("keyguard_lock");
    if (lock.isChecked()) {
        prefEdit("remove_lockscreen", 1);
        Toast.makeText(getBaseContext(), "Lockscreen will not be shown", Toast.LENGTH_SHORT).show();
        kl.disableKeyguard();
    }
    else if (!lock.isChecked()) {
        prefEdit("remove_lockscreen", 0);
        Toast.makeText(getBaseContext(), "Lockscreen will be shown", Toast.LENGTH_SHORT).show();
        kl.reenableKeyguard();
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

и я использовал этот код Disabled Keyguard Lock снова включает себя после нажатия на уведомление, но никогда не работает!!?? любая помощь

1 ответ

API KeyguardLock устарел с уровня API Android 13: http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html

Вы пытаетесь сделать это на устройстве Note 4, уровень API Android которого превышает 13. Поэтому теперь он будет работать.

Попробуйте это для проблемы 1:

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
this.getWindow().setType(WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
this.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Проблема 2: Блокировка повторно включается при нажатии на уведомление - это происходит потому, что при нажатии на уведомление запускается новое приложение и ваше приложение отправляется в фоновый режим. Таким образом, он теряет контроль над блокировкой, которая была отключена им, и блокировка повторно включается системой. Вы вызываете finish() в своем приложении?

Другие вопросы по тегам