Как начать диалог (например, будильник / повтор сигнала тревоги), который можно щелкнуть без разблокировки экрана

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

Я не хочу следующего:

private void unlockScreen(Context context){ Log.d("dialog", "unlocking screen now"); PowerManager powermanager = ((PowerManager)context.getSystemService(Context.POWER_SERVICE)); WakeLock wakeLock = powermanager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag"); wakeLock.acquire(); Window wind = DialogActivity.this.getWindow(); wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); } 

Solutions Collecting From Web of "Как начать диалог (например, будильник / повтор сигнала тревоги), который можно щелкнуть без разблокировки экрана"

Может быть, это будет полезно. FLAG_SHOW_WHEN_LOCKED флажок флажка FLAG_SHOW_WHEN_LOCKED вместе с FLAG_TURN_SCREEN_ON в public WindowManager.LayoutParams ()

Или вы можете использовать класс KeyguardManager (устарел в API 13, но все еще работает)

 public KeyguardManager.KeyguardLock newKeyguardLock (String tag) 

FLAG_DISMISS_KEYGUARD используйте FLAG_DISMISS_KEYGUARD и / или FLAG_SHOW_WHEN_LOCKED ; Это позволяет вам с легкостью скрыть блокировку клавиатуры, когда ваше приложение перемещается и выходит из переднего плана и не требует, чтобы какие-либо специальные разрешения запрашивались. Позволяет блокировать или разблокировать клавиатуру. Получите экземпляр этого класса, вызвав Context.getSystemService() . Этот класс обернут KeyguardManager .

WindowManager.LayoutParams

KeyguardManager

Надеюсь, вы сейчас понимаете, но не стесняйтесь спрашивать, нужны ли вам более подробные инструкции по кодированию этой проблемы
Ура ..

Вы можете добавить флаги в текущее окно, например:

  win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 

Если вы не хотите, чтобы он был постоянным, просто очистив флаги, которые вы добавили, когда они вам не нужны, используйте метод: clearFlags (flags).

Если ваш тип окна установлен достаточно высоким. Вы можете показать свое окно над экраном блокировки.

WindowsParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;