【发布时间】:2019-04-17 12:00:08
【问题描述】:
我想在一周中的某一天(例如星期日)设置闹钟。我知道该怎么做。
代码:
if (!repeatDays.equals("")) {
String[] repeatDays = this.repeatDays.split(",");
String[] weekDays = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
if (intent == null) {
for (int i = 0; i < weekDays.length; i++) {
for (int k = 0; k < 1; k++) {
if (weekDays[i].equals(repeatDays[k])) {
mCalendar.set(Calendar.DAY_OF_WEEK, i + 1);
mCalendar.set(Calendar.MONTH, mMonth);
mCalendar.set(Calendar.YEAR, mYear);
mCalendar.set(Calendar.HOUR_OF_DAY, mHour);
mCalendar.set(Calendar.MINUTE, mMinute);
mCalendar.set(Calendar.SECOND, 0);
new AlarmReceiver().createExactAlarm(getApplicationContext(), mCalendar, reminderId);
}
}
}
}
}
问题:假设今天是星期一,如果我要为一天中的所有其他时间设置闹钟,它就可以正常工作,但假设今天是星期六,如果我为之前的任何其他日子设置闹钟,例如星期一到星期五,警报管理器知道这是过去的一天,因此它会立即触发警报。但我想要的是,如果我什至选择过去的日子,它应该计算为下一周的那一天。这是我的要求。
注意:我根据当前系统日期设置星期几,从中我得到 mDate、年份和月份,并传入日历对象:
mDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
【问题讨论】:
-
请确保您使用的提醒 ID 与上一个不同。
-
如果是今天的前一天,则在日历中添加 7 天因此警报将在同一天但一周后触发 mCalendar.add(Calendar.DATE, 7);
-
@DivyaSIngh 抱歉,Divya,我必须使用相同的 id,我正在做的是我调用 setExact,所以一旦第一个警报触发器假设在星期二并进入 onReceive,我为下一个预定日期,可能是星期五。
-
@arslanbenzer 请通过代码解释
-
@arslanbenzer 你能写一些代码吗?