我正在从具有额外整数意图的服务创建通知。出于某种原因,这并不像看起来那么容易。这就是我正在做的事情:
Notification notification = new Notification(R.drawable.notification_icon, "Title", 0);
Intent relaunchIntent = new Intent(this, SomeClass.class);
relaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
relaunchIntent.putExtra("load", getId());
notification.setLatestEventInfo(this, "Title", "Tap here to open", PendingIntent.getActivity(this, 0, relaunchIntent, 0);
notificationManager.notify(1234, notification);
然后从SomeClass,它读起来像这样......
if(getIntent().getExtras() != null)
load(getIntent().getExtras().getInt("load", -1));
奇怪的是,当我从getInt()
方法中读取值时,我得到的结果不一致。有时我会得到我在之前的通知中设置的值的值。例如,当我将额外设置为4时,我得到值为3.我知道这非常令人困惑和奇怪,这就是为什么我想知道是否有人经历过这样的事情以及你可能做了些什么来修复它。谢谢!
答案 0 :(得分:5)
致电PendingIntent.getActivity
时,您应尝试使用PendingIntent.FLAG_UPDATE_CURRENT
。来自文档:
如果您要创建仅包含附加内容的意图,则可以使用此选项 改变,并不关心任何收到你以前的实体 PendingIntent将能够使用您的新演员启动它,即使 他们没有明确给予它。
我自己遇到了这个问题,并在this answer的评论中找到了答案。