Вернуть результат ошибки в inKeyguardRestrictedInputMode()
У меня есть функция для определения четырех состояний экрана телефона: экран включен, экран выключен, экран включен с блокировкой, экран включен без блокировки. Моя функция
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;
}
Вышеуказанная функция возвращает исправленные состояния экрана. Тем не менее, он имеет ошибку, когда я добавляю еще один код следующим образом:
KeyguardManager.KeyguardLock
kl = keyguardManager.newKeyguardLock("MyKeyguardLock");
if(index.equals("1"))
kl.disableKeyguard();
else if(indexequals("2"))
kl.reenableKeyguard();
getScreenStatus();
Индекс можно изменить, нажав кнопку. Теперь неправильное состояние экрана происходит. Всегда возвращаюсь screen_on_lock_screen
хотя экран в screen_on_no_lock_screen
, Как я могу исправить мою проблему?
1 ответ
С помощью KeyguardManager.NewKeyguardLock
устарела с уровня API 13. FLAG_DISMISS_KEYGUARD
а также FLAG_SHOW_WHEN_LOCKED
WindowManager.LayoutParams.
Этот класс устарел на уровне 13 API. Вместо этого используйте FLAG_DISMISS_KEYGUARD и / или FLAG_SHOW_WHEN_LOCKED; это позволяет вам> незаметно скрывать защиту клавиатуры при входе и выходе из> переднего плана и не требует запрашивать какие-либо специальные разрешения. > Дескриптор, возвращаемый newKeyguardLock(String), который позволяет отключить /> включить защиту клавиатуры.
Здесь ссылка из документации Android.
Надеюсь, поможет!