【问题标题】:How to change the contents of a notification without re-creating it?如何在不重新创建通知的情况下更改通知的内容?
【发布时间】:2020-02-05 18:46:23
【问题描述】:

我有一个通知会在一段时间后定期更新。 Foreground 服务也与之相关联,因此不断显示。更新数据时,我必须使用 NotificationManager 用新的通知重新创建通知

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notification.setContentText("Updated Text");
    notificationManager.notify(NOTIFY_ID, notification.build());

使用此方法时,每次收到通知时,在锁屏上显示为新通知,并在收到通知时出现声音和振动。但我想摆脱这个。

是否可以在现有通知中更新数据,而无需重新创建它?例如,这是如何在天气应用程序中完成的,其中数据直接在当前通知中定期更新: Notification Widget

编辑

对于我的不准确之处,我深表歉意。事实证明,我正在更改旧的通知,感谢@0X0nosugar 的提示。我使用相同的 ID 来更新通知,但每一秒我都会听到声音和振动,以及锁定屏幕上的持续消息,表明我有新的通知。虽然我没有收到新通知,但我正在更改相同的旧通知。

来自我的应用程序的通知不断出现在锁定屏幕上。但是,在天气应用程序中没有观察到这一点。 And I got this

【问题讨论】:

  • @0X0nosugar 谢谢,部分是的。事实证明,我使用了与该问题的答案相同的方法,但每一秒我都会听到声音和振动,以及锁定屏幕上的持续消息,我有新的通知。虽然我正在更改旧的通知。

标签: java android notifications android-notifications


【解决方案1】:

每当您在代码中使用任何不同的通知 ID 时,都会生成一个新通知。

所以,使用静态 nofiy_id(例如在您的 strings.xml 中定义)并调用它。

或者像这样使用它:

notificationManager.notify(0, notification.build());

【讨论】:

  • 谢谢,我做同样的事情并使用相同的ID,但是系统仍然将其识别为新通知,尽管它不会创建新通知并更改旧通知
  • 如果我得到正确的前台服务可能会解决问题。你能试试这个吗:youtu.be/FbpD5RZtbCc
  • 并尝试添加一个标志,如 notification.flags = Notification.FLAG_ONGOING_EVENT;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多