我目前正在开发一个带有提醒服务的安卓应用程序。我正在使用警报管理器。我已经成功地将警报设置为在用户单击按钮时运行。但我希望它从开始日运行到结束日。但现在,它似乎只是永远运行。
我已经有了这个:
private void setAlarm(String startDate,String endDate, String startTime, Context ctx, long id, int frequency){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Utility.getYear(startDate));
calendar.set(Calendar.MONTH, Utility.getMonth(startDate));
calendar.set(Calendar.DAY_OF_MONTH, Utility.getDay(startDate));
calendar.set(Calendar.HOUR_OF_DAY, Utility.getHour(startTime));
calendar.set(Calendar.MINUTE, Utility.getMinute(startTime));
Intent intent = new Intent(ctx,AlarmReceiver.class);
intent.putExtra("ID", (int)id);
intent.setAction(""+System.currentTimeMillis());
PendingIntent mPendingIntent = PendingIntent.getBroadcast(ctx, (int) id, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), (AlarmManager.INTERVAL_DAY / frequency), mPendingIntent);
}
警报工作。我只需要将其设置为能够在到达结束日期时停止。谢谢。
不能直接指定警报管理器的结束时间。您可以做的是手动取消广播接收器中的警报管理器。要取消警报管理器,您需要确保待处理的意图与您用于设置警报的请求代码相同。使用 AlarmManager
类的 cancel
方法,并将挂起的意图作为参数。
您希望在某个时间范围内设置重复闹钟。 您可以将结束日期的时间戳存储在共享首选项中。每次"挂起的意向"启动时,您都需要检查它是否超过结束日期限制。如果是这样,请取消调用取消方法的警报 alarmManager.cancel(待定意图(;