如何启动一个对话框(像闹钟dimiss /贪睡),可以点击不解锁屏幕

我不想永远绕过键盘保护,就在那一刻。例如,当一个警报提出(例如唤醒警报),我可以解雇/打盹没有解锁screen.I要达到同样的行为。我想开始一个对话应该锁在屏幕上。 我可以在没有解锁的情况下点击对话框上的button。这可能吗?如果是,怎么办?

我不想要以下内容:

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 "如何启动一个对话框(像闹钟dimiss /贪睡),可以点击不解锁屏幕"

可能是这个会有用的。 在public WindowManager.LayoutParams ()实现窗口标志FLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON

或者您可以使用KeyguardManager类(在API 13中不推荐使用,但仍然有效)

 public KeyguardManager.KeyguardLock newKeyguardLock (String tag) 

改为使用FLAG_DISMISS_KEYGUARD和/或FLAG_SHOW_WHEN_LOCKED ; 这使您可以在应用程序进出前台时无缝地隐藏键盘锁,而且不需要请求任何特殊权限。 使您能够locking或解锁键盘。 通过调用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)方法。

如果你的Windowstypes设置得足够高。 你可以在锁屏上方显示你的窗口。

WindowsParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;