在创建Android通知时,在PendingIntent中使用FLAG_UPDATE_CURRENT时,会复制intent附加内容

我想创建几个启动活动(或刷新它)以显示产品描述的通知

Notification notification = new Notification(R.drawable.applicationicon, Resources.getString("NewSaleNotification", context), System.currentTimeMillis()); // Hide the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL; Intent intent = new Intent(context, MainApplication.class); intent.putExtra("saleid", saleid); // to be sure the activity won't be restarted intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(context, SaleTitle, SaleMessage, pendingIntent); notificationManager.notify(saleid, notification); 

当我创建PendingIntent时,我有4个选择:FLAG_CANCEL_CURRENT,FLAG_NO_CREATE,FLAG_ONE_SHOT和FLAG_UPDATE_CURRENT。

最后一个( http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT )的定义是我想要做的,但它不能正常工作。 如果我创建2个通知,它们都具有相同的’saleid’额外,这是最新的。 如何使用不同的’saleid’额外制作多个通知?

  • Android辅助function服务检测通知
  • Android:获取通知的唯一ID
  • 恢复任务而不是特定活动的通知?
  • 如何将应用程序图标设置为通知抽屉中的通知图标
  • 如何为通知添加声音?
  • Android PendingIntent会带您进入已有的活动吗?
  • 自定义通知:java.lang.RuntimeException:错误的数组长度
  • Android如何在屏幕上显示通知
  • 但它不能正常工作

    是的,它确实。

    如果我创建2个通知,它们都具有相同的’saleid’额外,这是最新的。

    这正是文档所说的应该发生的事情。

    如何使用不同的’saleid’额外制作多个通知?

    选项#1:在每个Intents放置一个不同的操作字符串。 这将使它们不同(从filterEquals()的角度来看)并给它们单独的PendingIntents 。 但是,由于您在IntentMainApplication.class )中指定了该组件,因此该操作不会影响Intent的路由方式。

    选项#2:在getActivity()调用中使用不同的requestCode (第二个参数)。 虽然这被记录为“当前未使用”,但它确实导致返回不同的PendingIntent对象。 但是,由于此行为未记录,因此将来可能会更改。