gpt4 book ai didi

Android onNewIntent 总是收到相同的 Intent

转载 作者:行者123 更新时间:2023-11-29 14:39:50 25 4
gpt4 key购买 nike

我有 2 个通知:一个用于传入消息,一个用于传出消息。单击 Notification 时,它会将 PendingIntent 发送给自己。我输入了一个额外的值来确定点击了哪个 Notifications:

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");
}

加上确保只有一项任务的 manifest 行(在 activity 标记中):

android:launchMode="singleTop" 

我记录了它通过 onNewIntent 方法运行,但始终使用相同的 intent(即,如果我点击 IN 或 OUT notification,额外的 Intent 总是包含相同的 bundle(logs: OUT: false)。它始终是最后创建的 Intent,这是我发现的,因为这两个 Intent 的初始化发生在另一个序列中,而不是它们被更改时:

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);
}

为什么我总是收到相同的(最后创建的)Intent

最佳答案

您正在为所有 Intent 传递相同的requestcode,这就是为什么您每次都收到最后一个 Intent ,因此您必须在未决 Intent 中传递不同的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);

关于Android onNewIntent 总是收到相同的 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13838313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com