使用 AlarmManager class 的警报仅适用于当天
Alarm using AlarmManager class only works for current day
我有一个使用 alarmManager class 的工作警报。如果我在当天午夜之前的任何时间设置闹钟,一切都很好。如果我想为7a.m设置闹钟,然而,7a.m。今天已经来了又走了,那当然不行。
有没有办法在不在程序中实现日期选择器和日期的情况下做到这一点?
下面是一个代码示例。如果需要,我可以 post 更完整的代码。
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, myIntent, 0);
repeatInterval = LoadPreferences("repeatInterval", repeatInterval); //gets number of minutes reminder should repeat
repeatIntervalMilliseconds = repeatInterval * 1000 * 60; //converts repeating interval to milliseconds for setRepeating method
//Set a one time alarm
if (repeatInterval == 0) {
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
AlarmReceiver alarmReceiver = new AlarmReceiver(this); //
Toast.makeText(AlarmActivity.this, "Your one time reminder is now set for " + hourSet + ":" + minuteSetString + amPmlabel, Toast
.LENGTH_LONG)
.show();
}
//Set a repeating alarm
else {
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), repeatIntervalMilliseconds, pendingIntent);
AlarmReceiver alarmReceiver = new AlarmReceiver(this); //
Toast.makeText(AlarmActivity.this, "Your reminder is now set for " + hourSet + ":" + minuteSetString + amPmlabel + " and will " +
"repeat " +
"every " +
repeatInterval + " minutes.", Toast.LENGTH_LONG).show();
}
我正在测试 Mike M 推荐的这个解决方案。明天早上我会知道它是否有效。迈克,如果你想 post 分别解决同样的问题,并且成功了(我认为会成功),我可以给你加分。
//Add 1 day to alarmTime if alarmTime has already gone by for today
calendarComparison = now.compareTo(alarmTime);
if (calendarComparison == 1){
alarmTime.add(Calendar.DATE, 1);
}
我有一个使用 alarmManager class 的工作警报。如果我在当天午夜之前的任何时间设置闹钟,一切都很好。如果我想为7a.m设置闹钟,然而,7a.m。今天已经来了又走了,那当然不行。
有没有办法在不在程序中实现日期选择器和日期的情况下做到这一点?
下面是一个代码示例。如果需要,我可以 post 更完整的代码。
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, myIntent, 0);
repeatInterval = LoadPreferences("repeatInterval", repeatInterval); //gets number of minutes reminder should repeat
repeatIntervalMilliseconds = repeatInterval * 1000 * 60; //converts repeating interval to milliseconds for setRepeating method
//Set a one time alarm
if (repeatInterval == 0) {
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
AlarmReceiver alarmReceiver = new AlarmReceiver(this); //
Toast.makeText(AlarmActivity.this, "Your one time reminder is now set for " + hourSet + ":" + minuteSetString + amPmlabel, Toast
.LENGTH_LONG)
.show();
}
//Set a repeating alarm
else {
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), repeatIntervalMilliseconds, pendingIntent);
AlarmReceiver alarmReceiver = new AlarmReceiver(this); //
Toast.makeText(AlarmActivity.this, "Your reminder is now set for " + hourSet + ":" + minuteSetString + amPmlabel + " and will " +
"repeat " +
"every " +
repeatInterval + " minutes.", Toast.LENGTH_LONG).show();
}
我正在测试 Mike M 推荐的这个解决方案。明天早上我会知道它是否有效。迈克,如果你想 post 分别解决同样的问题,并且成功了(我认为会成功),我可以给你加分。
//Add 1 day to alarmTime if alarmTime has already gone by for today
calendarComparison = now.compareTo(alarmTime);
if (calendarComparison == 1){
alarmTime.add(Calendar.DATE, 1);
}