我制作了一个可以发出警报的应用程序。 我使用 AlarmManager 来安排闹钟。这工作正常,应用程序每次在BroadcastReceiver中接收警报。
在广播接收器中,我显示了这样的通知:
Intent reminder_intent = new Intent(ctxt, ReminderActivity.class);
String id = intent.getStringExtra("event_id");
String event_title = intent.getStringExtra("event_title");
String event_description = intent.getStringExtra("event_body");
reminder_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
reminder_intent.putExtra("reminder_title", event_title);
reminder_intent.putExtra("reminder_millis", intent.getLongExtra("event_millis", 0));
reminder_intent.putExtra("reminder_description", event_description);
reminder_intent.putExtra("reminder_background", ctxt.getResources().getColor(intent.getIntExtra("event_color", 0xff000000)));
reminder_intent.putExtra("reminder_event_id", id);
reminder_intent.putExtra("reminder_notify_id", id);
reminder_intent.putExtra("ringerMode", ringerMode);
NotificationManager manager = (NotificationManager)ctxt.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent pi = PendingIntent.getActivity(ctxt, ALARM_ID, reminder_intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification note = new Notification.Builder(ctxt)
.setVibrate(vibraPattern)
.setContentTitle(event_title)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(intent.getLongExtra("event_millis", 0))
.setSound(alarmSound, AudioManager.STREAM_ALARM)
.setTicker(event_description)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setFullScreenIntent(pi, false)
.setContentIntent(launch_pi)
.build();
note.flags |= Notification.FLAG_INSISTENT;
manager.notify(id, ALARM_ID, note);
这将启动fullScreenIntent“pi”,它运行onCreate方法。之后,应用程序因错误而崩溃:“无法初始化显示事件接收器”。但仅当设备处于深度睡眠模式时。也许经过一整夜的不活动。这完美无缺。 我一直在寻找这个问题很长一段时间,并发现其他人有同样的问题,但没有解决方案。 请参阅此链接:Link