2014-12-28 3 views
0

этот вопрос не имеет ответа до сих пор ??? В моем приложении я отключил блокировку блокировки клавиатуры (например, Remove Lockscreen), используя код ниже, и он работает нормально, пока я не нажму на любое уведомление в панели уведомлений. Если я нажимаю на уведомление, экран блокировки автоматически включается. Любая помощь приветствуется.Отключенная блокировка клавиатуры блокирует себя после нажатия на уведомление (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 re-enables itself after clicking on a notification но никогда не работать !! ?? любая помощь

+0

Какой уровень API вы используете? – abhinav

+0

этот код работает с некоторыми устройствами и другими не работает [примечание 4] – user3623824

+0

android: minSdkVersion = "11" android: targetSdkVersion = "21" /> – user3623824

ответ

1

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

Вы пытаетесь это на Примечание 4 устройства, который имеет уровень Android API больше чем 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: Блокировка повторно включен щелчок по notification- это происходит потому, что при нажатии кнопки уведомления новое приложение запускается и ваше приложение отправлен на задний план. Таким образом, он теряет контроль над Lock, который был отключен им, и блокировка снова активируется системой. Вы вызываете finish() в своем приложении?

+0

уверены , Я знаю, что это устарело. Но как можно отключить keyguard, я пытаюсь использовать флаг wind.addFlags (LayoutParams.FLAG_DISMISS_KEYGUARD); \t \t wind.addFlags (LayoutParams.FLAG_SHOW_WHEN_LOCKED); \t \t wind.addFlags (LayoutParams.FLAG_TURN_SCREEN_ON); .. но не работает – user3623824

+0

, пожалуйста, посмотрите на это решение http://stackoverflow.com/questions/13052470/disabled-keyguard-lock-re-enables-itself-after-clicking-on-a-notification/14519861#14519861 – user3623824

+0

Can пожалуйста, сообщите нам подробно, что вы пытаетесь достичь, я имею в виду, какова цель? – abhinav