BroadcastReceiver被调用时如何解锁屏幕?

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

Solutions Collecting From Web of "BroadcastReceiver被调用时如何解锁屏幕?"

闹钟的源代码在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); 

打开要从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(….):)之前