如何将android警报设置为在特定日期之前触发

时间:2015-10-13 11:12:47

标签: android android-service android-alarms

我是android新手并使用alarmManager,我想知道是否有办法在android中设置警报,例如每个星期一触发直到某个特定日期。像这样 : 开课日期10/09/15 每个星期一下午2:30提醒我一些事情 直到 截止日期为11/09/15

2 个答案:

答案 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));

参考文献: AlarmManagerScheduling Repeating AlarmsPendingIntent

答案 1 :(得分:0)

如果您知道如何设置闹钟,解决方案非常简单:

1)在设置警报时,计算您希望它运行的最大时间戳,并将其另存为本地首选项。

2)然后在警报代码本身中,每次触发时,您都可以进行第一次测试,以查看当前时间戳是在第一次保存限制首选项之前还是之后。

3)如果达到,则取消警报,因为@karthik说。如果没有,请保持代码...