我是android新手并使用alarmManager,我想知道是否有办法在android中设置警报,例如每个星期一触发直到某个特定日期。像这样 : 开课日期10/09/15 每个星期一下午2:30提醒我一些事情 直到 截止日期为11/09/15
答案 0 :(得分:1)
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 14);
calendar.set(Calendar.MINUTE, 30);
int weekInMillis = 7 * 24 * 60 * 60 * 1000;
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
weekInMillis, PendingIntent.getBroadcast(context, 0, new Intent(context, ReminderAlarmWakefulBroadcastReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT));
以上代码段会在下午2:30设置警报,每周重复一次。调整calendar
以改变闹钟响起的时间。例如,即将到来的星期一。
当闹钟响起时,它会发送一个广播,该广播将由ReminderWakefulBroadcastReceiver
收到,这是一个自定义接收器,包含您希望每周一下午2:30运行的代码。此代码还应检查是否是取消警报的时间,如果是,则以下代码取消它:
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(PendingIntent.getBroadcast(context, 0, new Intent(context, ReminderAlarmWakefulBroadcastReceiver.class));
参考文献: AlarmManager,Scheduling Repeating Alarms,PendingIntent
答案 1 :(得分:0)
如果您知道如何设置闹钟,解决方案非常简单:
1)在设置警报时,计算您希望它运行的最大时间戳,并将其另存为本地首选项。
2)然后在警报代码本身中,每次触发时,您都可以进行第一次测试,以查看当前时间戳是在第一次保存限制首选项之前还是之后。
3)如果达到,则取消警报,因为@karthik说。如果没有,请保持代码...