调用BroadcastReceiver时如何解锁屏幕?

时间:2010-12-04 07:50:42

标签: android broadcastreceiver

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

2 个答案:

答案 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(....)之前没有粘贴它:)