在特定日期安排Android通知

时间:2015-09-23 15:34:33

标签: android notifications android-notifications

我尝试安排某个日期的通知:

notification.defaults |= Notification.DEFAULT_SOUND;
    notification.defaults |= Notification.DEFAULT_VIBRATE;

    Intent notificationIntent = new Intent(context,
            NotificationPublisher.class);
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, 1);
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION,
            notification);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    long delay = millisFromNow(date);

    AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, delay,
            pendingIntent);

但是在我安排通知后,通知会出现。 这是我计算未来日期的工厂:

private static SimpleDateFormat dateFormat = new SimpleDateFormat(
        "dd/MM/yyyy HH:mm");
try {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(dateFormat.parse(date));

    return calendar.getTimeInMillis();
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return -1;
}

出了什么问题?

1 个答案:

答案 0 :(得分:0)

您正在使用此标志设置通知警报:

AlarmManager.ELAPSED_REALTIME_WAKEUP

正如文件所说: 报警时间为SystemClock.elapsedRealtime() 启动后 时间,包括睡眠状态),会在设备关闭时唤醒设备。

因此,此标志用于在启动时触发警报,我建议您更改为:

AlarmManager.RTC
相关问题