我的通知显示方法:
public static void ShowNotification(int id, String NotifFirstText,
String NotifTitle, String NotifeText, int notificon, long when) {
try {
Context context = ApplicationClass.context;
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(context.NOTIFICATION_SERVICE);
int icon = notificon;
CharSequence notiText = NotifFirstText;
long meow = when;
Notification notification = new Notification(icon, notiText, meow);
CharSequence contentTitle = NotifTitle;
CharSequence contentText = NotifeText;
Intent notificationIntent = new Intent();
String mPackage = "mypackage";
String mClass = ".ActivityShow";
notificationIntent.setComponent(new ComponentName(mPackage,
mPackage + mClass));
notificationIntent.putExtra("id", id);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
notification.flags = Notification.DEFAULT_LIGHTS
| Notification.FLAG_AUTO_CANCEL
| Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND;
PendingIntent contentIntent = PendingIntent.getActivity(G.context,
0, notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
int SERVER_DATA_RECEIVED = id;
notificationManager.notify(SERVER_DATA_RECEIVED, notification);
} catch (Exception e) {
e.printStackTrace();
}
}
这是我的活动代码:
if (getIntent().getExtras() != null) {
Toast.makeText(getBaseContext(),
getIntent().getExtras().getInt("id") + "", Toast.LENGTH_LONG).show();
}
我创建了多个通知,并为所有人设置了不同的ID,但是当我点击每个通知时,我会给出相同的ID ...
如何解决这个问题?
答案 0 :(得分:2)
当您使用PendingIntent.getActivity(G.context, 0, notificationIntent,0)
时,额外内容不会因PendingIntent overview而被替换:
由于这种行为,为了检索PendingIntent,重要的是要知道两个Intent何时被认为是相同的。人们常犯的一个错误就是使用Intents创建多个PendingIntent对象,这些对象只在其“额外”内容中有所不同,期望每次都获得不同的PendingIntent。这不会发生。用于匹配的Intent部分与Intent.filterEquals定义的部分相同。如果你使用两个相当于Intent.filterEquals的Intent对象,那么你将获得两个相同的PendingIntent。
虽然在大多数情况下你会用FLAG_UPDATE_CURRENT替换上一个0
来更新附加内容,但这并没有帮助同时发出多个通知的问题,而是他们说:
如果您确实需要多个不同的PendingIntent对象同时处于活动状态(例如用作同时显示的两个通知),那么您需要确保关联它们的某些内容有所不同他们有不同的PendingIntents。
最简单的方法是将id
作为请求代码(第二个参数)传入。这可确保单独管理每个PendingIntent:
PendingIntent.getActivity(G.context, id, notificationIntent, 0)