【发布时间】:2015-04-24 18:19:30
【问题描述】:
我有一个后台 Service,它可以触发事件并为我的应用构建通知。如果单击,通知应打开MainActivity,并根据发送的信息,在此Activity 中打开我的片段之一。为此,Notification 包含一个 PendingIntent,它将数据保存到 Intent 的 Bundle。
这个触发事件有三种场景:
- 应用程序在前台:我的服务发送一个
Broadcast和我的BroadcastReceiver在Activity获取事件并处理它。不需要Notification。效果很好。 - 应用被杀:
PendindIntent重新打开我的应用,我的Activity使用getIntent().getExtras()通过Bundle访问我的信息。一切正常。 - 后台应用程序:Activity 已经创建,因此广播接收器已注册。我点击我的通知,但没有任何反应。我既没有收到广播消息,也无法访问我的
Bundle(使用getIntent().getExtras()在onResume 中检查它,它是空的)。
关于如何解决第三种情况有什么想法吗?
创建通知的代码:
private void createNotification() {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.my_icon);
mBuilder.setContentTitle("My App");
mBuilder.setContentText("Notification message");
Bundle bundle = new Bundle();
bundle.putString(MainActivity.OPEN_FRAGMENT, "myFragment");
Intent resultIntent = new Intent(this, MainActivity.class);
resultIntent.putExtra("myInfo","myInfo");
resultIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
resultIntent.putExtras(bundle);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
}
【问题讨论】:
标签: android service broadcastreceiver bundle android-pendingintent