调用BroadcastReceiver时如何解锁屏幕?

kev*_*ynx 7 android broadcastreceiver

您可以猜到,我通过AlarmManager注册了一个警报.并且将正确调用BroadcastReceiver.但是当它打电话时,我的手机屏幕仍然被锁定.我注意到默认的AlarmClock应用程序不是这样的.所以我的问题是,当调用BroadcastReceiver时如何解锁屏幕?(解锁屏幕可以让用户直接操作我的Activity)提前感谢.

Ebo*_*ike 8

闹钟的源代码在Android源代码中.AlarmClock消失了,但已被DeskClock取代.源代码在这里.我快速浏览了代码,他们的接收器似乎使用了KeyguardManager.看看文档,这似乎是你想要的.

编辑:我会在这里添加您的发现.这段代码应该:

final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
              | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
              | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

  • 好吧,因为我的回复将帮助其他谷歌的人,我发布我的简单解决方案.正如您给我的源代码中所示,我们可以为Activity添加一些窗口标志,android将帮助我们做这些我在这里要求的事情.只需将这些代码添加到我的通知活动:final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); (2认同)