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

Android 调用BroadcastReceiver时如何解锁屏幕?,android,broadcastreceiver,Android,Broadcastreceiver,您可以猜到,我通过AlarmManager注册了一个警报。并且广播接收器将被正确调用。但当它打电话时,我的手机屏幕仍然被锁定。我注意到默认的AlarmClock应用程序不是这样的。所以我的问题是,在调用BroadcastReceiver时如何解锁屏幕?(解锁屏幕可使用户直接操作我的活动) 提前感谢。闹钟的源代码在Android源代码中。AlarmClock已消失,但已被DeskClock取代。我很快地浏览了一下代码,他们的接收器似乎在使用。看看这些文件,这似乎是你想要的 编辑:我将在这里添加您的

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

闹钟的源代码在Android源代码中。AlarmClock已消失,但已被DeskClock取代。我很快地浏览了一下代码,他们的接收器似乎在使用。看看这些文件,这似乎是你想要的

编辑:我将在这里添加您的发现。此代码应执行以下操作:

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(..)之前粘贴它。

谢谢,我将阅读您在此处提供的源代码。事实上,我以前搜索过一些代码,但由于某些原因,我无法获得默认的AlarmClock源代码。是的,因为它已被删除。新的热点是“桌面时钟”。在任何情况下,只要快速浏览一下KeyguardManager文档(我链接了它),看看这是否是您所需要的。我浏览了一下“KeyguardManager”文档,正如它所说:“可以用来锁定和解锁键盘的类”。我想这就是我所需要的。但是api似乎不是很直接。我需要一些时间来试一下。不管怎样,谢谢。好的,因为我的回复将帮助其他在这里搜索的人,我发布了我的简单解决方案。正如你给我的源代码所示,我们可以在我们的活动中添加一些窗口标志,android将帮助我们完成我在这里要求的这些事情。只需将这些代码添加到我的通知活动:final Window win=getWindow();win.addFlags(WindowManager.LayoutParams.FLAG_锁定时显示_ | WindowManager.LayoutParams.FLAG_解除_KEYGUARD);win.addFlags(WindowManager.LayoutParams.FLAG_保持屏幕_打开| WindowManager.LayoutParams.FLAG_打开屏幕_打开);顺便说一句,如果你接受这个答案,我们都会得到积分。谢谢