如何在不解锁屏幕的情况下启动可以单击的对话框(如闹钟dimiss/snooze)

use*_*796 9 android password-protection android-alarms

我不想永久地绕过键盘锁,只是为了这一刻.例如当发出警报时(例如唤醒警报)我可以在解锁屏幕时解除/暂停它.我想要实现同样的行为.我想开始一个对话框应该在锁定的屏幕上.我可以点击对话框上的按钮而不解锁.这可能吗?如果是的话怎么样?

我不想要以下内容:

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


    }
Run Code Online (Sandbox Code Playgroud)

Yas*_*nan 5

可能会有用。FLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ONin 一起实施window标志,public WindowManager.LayoutParams ()

或者可以使用KeyguardManagerclass(API 13中已弃用,但仍可以使用)

public KeyguardManager.KeyguardLock newKeyguardLock (String tag)
Run Code Online (Sandbox Code Playgroud)

使用FLAG_DISMISS_KEYGUARD和/或FLAG_SHOW_WHEN_LOCKED代替;这样,您就可以在应用程序移入和移出前台时无缝隐藏键盘锁,并且不需要请求任何特殊权限。使您可以锁定或解锁键盘。通过调用获取此类的实例Context.getSystemService()。此类由包装KeyguardManager


WindowManager.LayoutParams


键盘管理员


希望您现在就明白了,不过随时问您是否需要更详细的编码说明以解决此问题