警报管理器未正确安排警报

时间:2016-09-24 16:53:58

标签: android alarmmanager alarm repeatingalarm

我正在设置警报

    Calendar now = Calendar.getInstance();
    Calendar alarm = Calendar.getInstance();
    alarm.set(Calendar.HOUR_OF_DAY,21);
    alarm.set(Calendar.MINUTE,30);
    if (alarm.before(now)) {
        alarm.add(Calendar.DAY_OF_MONTH, 1);  //Add 1 day if time selected before now
    }
         AlarmManager alarmManager =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context,Receiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(context,(int)alarm.getTimeInMillis(),i,0);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (int)alarm.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi);

但即使我在第二天安排它,它也会在保存警报后立即触发。 不知道这个问题已被搜索了很多,但其他人都得到了它的工作

1 个答案:

答案 0 :(得分:1)

您正在向long投射int个时间戳,从而丢失了比特并更改了实际的时间戳值。你最终得到的时间已经过去,所以它立即执行了意图。

PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

请注意,我删除了最后一行中的(int)广告。