【问题标题】:Multiple notifications to the same activity同一活动的多个通知
【发布时间】:2011-08-29 07:27:39
【问题描述】:

我有一个正在从通知栏打开的活动,但是当我执行NotificationManager.notify(...) 时,我给意图一个不同的包,以便每个通知打开相同的活动,但从其他数据库中获取互相信息。

但是当我尝试输入任何通知(例如,有 3 个通知)时,它们都将我发送到与最后一个具有相同捆绑包的活动。在尝试了一些标志之后,我真的不知道问题出在哪里(一些标志使通知进入带有第一个包的活动)。

我正在按照他们在the tutorial 中使用它的方式。

【问题讨论】:

  • 你能分享一些你正在创建待处理意图的代码吗?我有一个类似的问题,这是因为它们是框架重用的未决意图。

标签: android android-intent android-pendingintent notificationmanager


【解决方案1】:

如果 PendingIntent 具有相同的操作、动作、数据、类别、组件和标志,它将被替换。

根据情况,我通常通过提供唯一的请求代码作为静态值 (0,1,2) 或我从数据库接收的数据的行 ID 来解决这个问题。

PendingIntent.getActivity(context, MY_UNIQUE_VALUE , notificationIntent, PendingIntent.FLAG_ONE_SHOT);

然后我使用与 notify() 相同的唯一值

mNotificationManager.notify(MY_UNIQUE_VALUE, notification);

【讨论】:

  • 我遇到了同样的问题,这个解决方案非常有效。我认为问题始于documentation - 声称当前未使用请求代码,但似乎确实如此。感谢您的回答。
  • 这是为我做的。非常感谢。开发者文档确实只提到了 notify 方法的唯一 ID,而不是 getActivity 方法。
  • PendingIntent.FLAG_UPDATE_CURRENT 也不起作用。感谢您的回答。
  • 谢谢,这对我有用。但请记住,MY_UNIQUE_VALUE 不得大于 65535 (2^16),因为只允许使用请求代码的前 16 位(片段为 2^8)。一个简单的解决方案是使用 (MY_UNIQUE_VALUE % 65535) 作为 requestCode。所以它不会超过 2^16 ;)
  • 完美答案,为什么直到现在才被接受?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多