您可以猜到,我通过AlarmManager注册了一个警报。并且将正确调用BroadcastReceiver。但是当它打电话时,我的手机屏幕仍然被锁定。我注意到默认的AlarmClock应用程序不是这样的。所以我的问题是,当调用BroadcastReceiver时如何解锁屏幕? (解锁屏幕可以让用户直接操作我的Activity) 提前谢谢。
答案 0 :(得分:8)
闹钟的源代码在Android源代码中。 AlarmClock消失了,但已被DeskClock取代。 Source code is here。我快速浏览了代码,他们的接收器似乎使用了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);
答案 1 :(得分:0)
打开要从onReceive(....)开始的活动A.将其粘贴到该活动A的onCreate()
中 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);
确保在setContentView(....)之前没有粘贴它:)