如何创建多个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的所有标志都无法解决我的问题。
答案 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解决方案”工作原理的信息