【问题标题】:How to update time of an Android notification如何更新 Android 通知的时间
【发布时间】:2016-12-30 18:23:42
【问题描述】:

我收到了每隔几分钟更新一次的 Android 通知。

首先我像这样创建一个Builder

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);

然后,当我第一次展示它并且每次更新它时,我都会使用这个代码:

mBuilder.setContentTitle("Title");
mBuilder.setContentText("Text");
NotificationManager manager = (NotificationManager)
        context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0, mBuilder.build());

但在通知的右上角,Android 仍然会显示第一次显示给用户的时间。我希望它显示上次更新的时间。我知道这是可能的,因为 Facebook 的 Messenger 应用程序会这样做 - 更改发送新消息时的显示时间。

我怎样才能做到这一点?

目前:

【问题讨论】:

  • 请记住,在 Java 中所有代码都必须在一个类中。
  • @Code-Apprentice 好吧,如果我不知道,我不会发布屏幕截图。通知按原样更新,只是时间没有改变
  • 是的,我明白你的问题。我只是提供一个建议来帮助改进您的问题。一方面,类和方法名称提供了有关您的代码的更多信息,有助于我们回答您的问题。如果它们不是 Android 回调,您还应该展示如何调用任何方法。

标签: java android notifications android-notifications


【解决方案1】:

您可能正在寻找NotificationCompat.Builder#setWhen(long)。提供 System.currentTimeMillis() 应该会将时间戳更新为当前时间。

此外,如果您希望该时间戳出现在 Android N 或更高版本上,您需要在某个时候调用 NotificationCompat.Builder#setShowWhen(true),因为它默认为 false。

来源:https://developer.android.com/reference/android/app/Notification.html#when

【讨论】:

  • 谢谢!这正是我所需要的
【解决方案2】:

您可以使用以下代码显示时间

val notificationBuilder = NotificationCompat.Builder(this)
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentTitle(title)
        .setContentText(body)
        .setColor(resources.getColor(R.color.colorPrimary))
        .setAutoCancel(true)
        .setSound(soundUri)
        .setContentIntent(pendingIntent)
        .setWhen(System.currentTimeMillis())

【讨论】:

  • 您还需要.setShowWhen(true),如上面的答案所示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多