9

在通知管理器中,我们使用此方法设置时间和日期以触发通知

.setWhen(System.currentTimeMillis());

但是System.currentTimeMillis()要取回设备上的当前时间,但我想添加指定的时间,例如(星期五 15:00)

我怎样才能做到这一点 ??我如何以毫秒为单位设置这个时间并将其加载到.setWhen

提前致谢

我使用的这段代码

Notification.Builder builder =
new Notification.Builder(MyActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setTicker(“Notification”)
.setWhen(System.currentTimeMillis())
.setDefaults(Notification.DEFAULT_SOUND |
Notification.DEFAULT_VIBRATE)
.setSound(
RingtoneManager.getDefaultUri(
RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 })
.setLights(Color.RED, 0, 1);
Notification notification = builder.getNotification();
4

3 回答 3

9

您应该使用 Java Calendar类来指定日期。使用工厂方法实例化一个Calendar对象。getInstance()默认情况下,实例将使用您机器默认时区的当前日期和时间进行初始化。Calendar包含set()指定日期的不同方法,选择更适合您需要的方法并使用它来指定您需要的日期。然后调用该getTimeInMillis()方法,它将以毫秒为单位返回指定的日期。希望这可以帮助。

于 2013-03-17T08:08:35.653 回答
2
import java.util.*;
...
builder.setWhen(Calendar.getInstance().getTimeInMillis() );
于 2018-05-06T14:31:17.237 回答
0

正如@Deimos 在评论中已经提到的那样,“setWhen”函数仅设置特定通知的时间戳以显示在通知中,它不是“FIRE”的时间戳或在特定时间点触发通知。它是 Notification(.Builder) 类的一部分,似乎只支持创建自定义通知。触发通知,例如在周日下午 1 点触发以提醒用户周末某事的通知可以在本地实现,例如在 AlarmManager 和 Broadcast 的帮助下,Alarm Manager 根据给定的日期和时间触发通知,或者使用任何服务器实例远程触发通知就像 Android 的 FCM。我希望这能消除任何可能即将发生的误解。

于 2021-05-25T12:27:16.003 回答