如何设置 android 警报在特定日期前触发
How to set android alarm to trigger until an specific date
我是 android 的新手,正在使用 alarmManager,我想知道是否有办法在 android 中设置一个警报,例如每周一触发,直到某个特定日期。像这样 :
开始日期 10/09/15
每个星期一下午 2:30 提醒我一些事情
直到
结束日期 11/09/15
如果您知道如何设置闹钟,解决方法就很简单:
1) 在设置闹钟时,计算您希望它使用的最大时间戳 运行,并将其保存为本地首选项。
2) 然后在警报代码本身中,每次触发时,您都可以进行第一次测试,以查看当前时间戳是在您第一次保存的限制偏好之前还是之后。
3) 如果达到,则取消警报,如@karthik 所说。如果没有,请继续编写代码...
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 PM 设置了每周重复的警报。调整 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
我是 android 的新手,正在使用 alarmManager,我想知道是否有办法在 android 中设置一个警报,例如每周一触发,直到某个特定日期。像这样 : 开始日期 10/09/15 每个星期一下午 2:30 提醒我一些事情 直到 结束日期 11/09/15
如果您知道如何设置闹钟,解决方法就很简单:
1) 在设置闹钟时,计算您希望它使用的最大时间戳 运行,并将其保存为本地首选项。
2) 然后在警报代码本身中,每次触发时,您都可以进行第一次测试,以查看当前时间戳是在您第一次保存的限制偏好之前还是之后。
3) 如果达到,则取消警报,如@karthik 所说。如果没有,请继续编写代码...
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 PM 设置了每周重复的警报。调整 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