Android 如何启动无需解锁屏幕即可单击的对话框(如alarm dimiss/snooze)

Android 如何启动无需解锁屏幕即可单击的对话框(如alarm dimiss/snooze),android,password-protection,android-alarms,Android,Password Protection,Android Alarms,我不想就在那一刻永久性地绕过键盘保护。例如,当发出警报(如唤醒警报)时,我可以在没有解锁屏幕的情况下关闭/打盹。我想实现相同的行为。我想启动一个对话框,该对话框应该位于锁定屏幕的顶部。我可以单击对话框上的按钮而不解锁。这可能吗?如果是,如何实现 我不想要以下内容: private void unlockScreen(Context context){ Log.d("dialog", "unlocking screen now"); PowerManager pow

我不想就在那一刻永久性地绕过键盘保护。例如,当发出警报(如唤醒警报)时,我可以在没有解锁屏幕的情况下关闭/打盹。我想实现相同的行为。我想启动一个对话框,该对话框应该位于锁定屏幕的顶部。我可以单击对话框上的按钮而不解锁。这可能吗?如果是,如何实现

我不想要以下内容:

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);


    }

也许这会有用。在
公共WindowManager.LayoutParams()


中,在锁定时执行窗口标志
标志\u显示\u以及打开
标志屏幕\u

public KeyguardManager.KeyguardLock newKeyguardLock (String tag)
使用
FLAG\u discover\u KEYGUARD
和/或
FLAG\u SHOW\u WHEN\u LOCKED
;这允许您在应用程序进出前台时无缝隐藏键盘保护,并且不需要请求任何特殊权限。使您能够锁定或解锁键盘。通过调用
Context.getSystemService()
获取此类的实例。此类由
KeyguardManager
包装




希望您现在能理解,但请随时询问是否需要有关此问题的更详细的编码说明

干杯..

如果您的windows类型设置得足够高。您可以在锁屏上方显示您的窗口


WindowsParams.type=WindowManager.LayoutParams.type\u系统错误

您可以向当前窗口添加标志,如下所示:

    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)。

为什么无人应答?
KeyguardManager。根据android文档,KeyguardLock在API 13中被弃用。所以我想如果你想从睡眠中打开设备,你应该在锁定时继续使用
FLAG\u SHOW\u
加上
FLAG\u TURN\u SCREEN\u ON
。是的,你是对的
KeyguardManager.KeyguardLock
是一种贬值的方法,我只是建议也有可能以这种方式编码(仍然有效)。谢谢你提到
FLAG\u TURN\u SCREEN\u ON
我真的忘了这个。