如何注册AlarmManager以重复选定的日期?

时间:2011-12-28 09:37:01

标签: android alarmmanager

我正在创建一个警报应用程序。

在我的应用程序中,用户可以选择触发警报的日期,例如星期日,星期一,所以我使用Calendar类和AlarmManager来注册多个警报。

如果所选日期或小于一周的当天,则会立即触发警报。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, getDayint); //sunday = 1
calendar.set(calendar.HOUR_OF_DAY, gethour);
calendar.set(calendar.MINUTE, getmin);
calendar.set(calendar.SECOND, 0);
calendar.set(calendar.MILLISECOND, 0);

long TIM = calendar.getTimeInMillis();

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, TIM, sender);

//repeat weekly
am.setRepeating(am.RTC,TIM, AlarmManager.INTERVAL_DAY*7, sender);

1 个答案:

答案 0 :(得分:1)

通过使用PendingIntent.FLAG_UPDATE_CURRENT,你说你只想要一个这样的警报 - 所以最新的一个 - 每周只有一个警报。如果TIM位于过去,则立即触发警报(然后重复)到目前为止 - 一切都按设计工作。

你可以检查TIM(顺便说一句,它是变量,并且它的大小是不是像常量一样是大写的)小于System.currentTimeMillis()并且在这种情况下为它添加一周