如何创建多个PendingIntent?

时间:2012-09-21 08:14:40

标签: java android notifications android-pendingintent

如何创建多个PendingIntent? 我有几个通知,当用户按下最后一个时,一切正常,但是否则点击通知没有响应。 我的代码是:

Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).setAction("ShowDialog");
notificationIntent.putExtra("args", Tools.getInstance().generateBundle(progressId, lastId));
notificationBuilder.setContentIntent(PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT));

我认为原因是FLAG_CANCEL_CURRENT,但PendingIntent的所有标志都无法解决我的问题。

2 个答案:

答案 0 :(得分:3)

根据我的猜测,

您只需要为每个未决意图提供不同的唯一ID,您的申请就不会有任何问题。

喜欢,
PendingIntent.getActivity(context, uniqID, nIntent, PendingIntent.FLAG_ONE_SHOT);


如果您不打算删除或更新意图,则可以使用calendar.getTimeInMillis()作为唯一ID。

答案 1 :(得分:0)

看看你所描述的CANCEL_CURRENT标志。您必须为不同的通知创建不同的待处理意图,否则它们被视为相同。查看IntentSender documentation以了解创建单独的待处理意图需要执行的操作。我的建议是在数据中编码一个id。如果您愿意,它可以非常简单,或者它可以具有识别意图的含义。以下是特别感兴趣的片段:

  

如果创建应用程序稍后重新检索相同类型的   IntentSender(相同的操作,相同的Intent操作,数据,类别,   和组件,以及相同的标志),它将收到一个IntentSender   表示相同的标记,如果它仍然有效。

您看到的问题是由于您重复使用相同的待处理意图,并在“创建”新目标时取消之前的意图。

另请注意,根据设计指南,您应该只有一种通知(例如,只有一个新电子邮件通知,新短信,...)如果有多个相同类型的通知他们应合并为一个通知。但是,它只是一个指导。

您可以在当前版本的Android here中找到有关“requestCode / uniqueId解决方案”工作原理的信息