5

在我的应用程序中,当通知到达时,BroadcastReceiver如果屏幕被锁定,则不会调用。但是当屏幕解锁时,BroadcastReceiver会调用并显示通知。

我还在清单中添加了以下权限:

android.permission.WAKE_LOCK

但仍然无法正常工作。

4

2 回答 2

15

这是对我有用的代码:

NotificationManager mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(...);
...
mManager.notify(0, notification);
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wl.acquire(15000);

确保从服务器发送通知delay_while_idle=0(这是默认值),否则 GCM 在设备唤醒之前不会发送通知。

于 2013-08-28T18:42:20.937 回答
1

从 BroadCastReceiver 的 onReceive(....) 打开要启动的 Activity 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(....) 之前粘贴它 :-)

于 2015-08-02T14:10:01.240 回答