我有一个不寻常的问题,我的推送通知正在使用旧推送通知中的数据,我想。我的应用程序有一个公司列表,我使用数据推送通知,以便当用户点击通知时,它会将他们带到我的应用程序中的该公司。在测试时,我发送的第一条消息可以正常工作并将我带到正确的公司。当我发送另一条应该发送到另一家公司的消息时,它会转到第一条消息。我知道应用程序正在接收正确的信息,因为当我记录公司ID时,它与预期的匹配。但是,当通过单击通知打开应用程序时,日志中显示的公司ID不正确。
这是处理通知的代码
private void sendNotification(String title, String msg, String cat, String comp) {
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
Log.i("Send notif",""+comp);
Intent launch = new Intent(this, AccountSetup.class);
launch.putExtra("cat", cat).putExtra("comp", comp);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
launch, 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(msg))
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
这正如预期的那样工作,这是我用于将信息提取出来的代码onCreate()
Intent thispage = getIntent();
if(thispage.getStringExtra("comp") != null ) {
Log.i("mainactivity extras","received cat " + thispage.getIntExtra("cat", 11) + " comp " + thispage.getStringExtra("comp"));
mainPage.putExtra("currentLocation", user._Location)
.putExtra("selectedCategory", thispage.getIntExtra("cat", 11))
.putExtra("selectedCompany", -1)
.putExtra("companyID", thispage.getStringExtra("comp"));
}
这就是我遇到问题的地方,当活动启动时,它仍然具有旧的公司ID,无论我点击了什么推送通知消息。
我错过了什么吗?消息的标题和正文是正确的,日志显示公司ID也是正确的,就在我点击它时,意图额外只显示第一条消息中发送的内容。
答案 0 :(得分:2)
我也面临着类似的问题。我通过使用PendingIntent.Flagoneshot解决了它。这是我的代码中的一行:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
intent, PendingIntent.FLAG_ONE_SHOT);
有5种类型的pendingintent标志,如果不是这一种,其中一种可能对你有效。
答案 1 :(得分:0)
请注意,活动将在现有活动的上下文之外启动,因此您必须在Intent中使用Intent.FLAG_ACTIVITY_NEW_TASK启动标志。试试吧。