在通知管理器中,我们使用此方法设置触发通知的时间和日期
.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();
答案 0 :(得分:8)
您应该使用Java Calendar类来指定日期。使用Calendar
工厂方法实例化getInstance()
对象。默认情况下,将使用计算机默认时区的当前日期和时间初始化实例。 Calendar
包含指定日期的不同set()
方法,请选择一个更适合您需求的方法,并使用它来指定所需日期。然后调用getTimeInMillis()
方法,该方法将以毫秒为单位返回指定的日期。希望这会有所帮助。
答案 1 :(得分:1)
import java.util.*;
...
builder.setWhen(Calendar.getInstance().getTimeInMillis() );
答案 2 :(得分:0)
正如@Deimos 在评论中已经提到的那样,'setWhen' 函数仅设置用于在通知中显示的特定通知的时间戳,它不是 'FIRE' 或在特定时间点触发通知的时间戳.它是 Notification(.Builder) 类的一部分,似乎只支持创建自定义通知。 发出通知,例如可以实现在周日下午 1 点触发的通知,以提醒用户周末的某事,例如在 AlarmManager 和 Broadcast 的帮助下,本地警报管理器根据给定的日期和时间或远程使用任何服务器实例(如 Android 的 FCM)触发通知。 我希望这能消除任何可能的误解。