Android onNewIntent总是收到相同的意图

Android onNewIntent总是收到相同的意图,android,android-intent,android-notifications,Android,Android Intent,Android Notifications,我有两个通知:一个用于传入消息,一个用于传出消息。在通知单击时,它将挂起内容发送给self。我输入了一个额外的值来确定单击了哪个通知: private static final int INID = 2; private static final int OUTID = 1; private void update(boolean incoming, String title, String message, int number) { notificationManager = (N

我有两个
通知
:一个用于传入消息,一个用于传出消息。在
通知
单击时,它将
挂起内容
发送给self。我输入了一个额外的值来确定单击了哪个
通知

private static final int INID = 2;
private static final int OUTID = 1;

private void update(boolean incoming, String title, String message, int number) {
    notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    Intent intent = new Intent(this, Entry.class);
    intent.putExtra((incoming ? "IN" : "OUT"), incoming);
    PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
    Notification noti = new Notification(incoming ? R.drawable.next : R.drawable.prev, incoming ? "Incoming message" : "Outgoing message", System.currentTimeMillis());
    noti.flags |= Notification.FLAG_NO_CLEAR;
    noti.setLatestEventInfo(this, title, message, pi);
    noti.number = number;
    notificationManager.notify(incoming ? INID : OUTID, noti); 
}
并在
onNewIntent
方法中捕获
Intent

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
    if (intent.getExtras() != null) 
        for (String id : new ArrayList<String>(intent.getExtras().keySet())) {
            Object v = intent.getExtras().get(id);
            System.out.println(id + ": " + v);
        }
    else
        log("onNewIntent has no EXTRAS");
}
我记录了它通过
onNewIntent
方法运行,但始终使用相同的
intent
(即,如果我单击输入或输出
通知
,intent extra始终包含相同的
(日志:
OUT:false
)。始终是最后创建的意图,我发现了这一点,因为这两个意图的初始化都是以另一个顺序发生的,而不是在它们被更改时:

private void buttonClick(View v) {      
    update(true, "IN", "in", 1);
    update(false, "OUT", "out", 3);
}

private void setNotificationSettings() {
    update(false, "IN", "===out message===", 0);
    update(true, "OUT", "===in message===", 0);
}

为什么我总是收到相同的(上次创建的)
意图

对于每次收到上次意图的所有意图,您都在传递相同的
requestcode
,因此您必须在挂起的意图中传递不同的
requestcode

就像下面的代码一样

您的代码:

 PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(Entry.this, your_request_code, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
需要更改:

 PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(Entry.this, your_request_code, intent, Intent.FLAG_ACTIVITY_NEW_TASK);

您每次都在为所有意图传递相同的
requestcode
,这就是为什么您每次都会收到上一个意图,因此您必须在挂起的意图中传递不同的
requestcode

就像下面的代码一样

您的代码:

 PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(Entry.this, your_request_code, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
需要更改:

 PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(Entry.this, your_request_code, intent, Intent.FLAG_ACTIVITY_NEW_TASK);

如何定义我的请求代码?或者我应该设置两个请求代码,每个通知一个?或者它们是否应该与它们的
通知id
相等?我现在有这个代码在你说的那行:
incoming?678452056:678452099
这似乎很有效,顺便说一句。
意图。标记活动新任务
不属于这里。我如何定义我的请求代码?或者我应该设置两个请求代码,每个通知一个?或者它们是否应该与它们的
通知id
相等?我现在有这个代码在你说的那行:
incoming?678452056:678452099
这似乎有效,顺便说一句。
意图。标记活动和新任务
不属于这里