报警没有得到停止
问题描述:
我想停止报警,并检查它是否停止与否,而是指报警工作,它总是返回true。我试图根据链接中的答案,停止报警 http://stackoverflow.com/a/17616299/1226882 但它不为我工作。
I am trying to stop the alarm and checking it whether it stopped or not, but it always returns true means alarm is working. I tried to stop the alarm based on the answer in the link http://stackoverflow.com/a/17616299/1226882 but it doesnt work for me.
请参阅下面的code
Please refer the below code
-
开始报警
public static void startSchedulerAlaram(Context ctx) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.compareTo(Calendar.getInstance()) <= 0)
calendar.add(Calendar.DATE, 1);
AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(ctx, Alaram_Receiver.class);
intent.setAction(Utility.SCHEDULE_ACTION);
PendingIntent pi = PendingIntent.getBroadcast(ctx, 1, intent,0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi);
log("Scheduler Alarm", "Started");
}
停止报警
public static void stopSchedulerAlaram(Context ctx) {
Intent intent = new Intent(ctx, Alaram_Receiver.class);
intent.setAction(Utility.SCHEDULE_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 1,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
log("Scheduler Alarm", "Stopped");
}
查看报警
public static boolean checkSchedulerAlaram(Context ctx) {
boolean alarmUp = (PendingIntent.getBroadcast(ctx, 1, new Intent(ctx,Alaram_Receiver.class).setAction(Utility.SCHEDULE_ACTION),
PendingIntent.FLAG_NO_CREATE) != null);
return alarmUp;
}
答
您必须通过不同的ID进行设定的报警
PendingIntent.getBroadcast(ctx, id, intent,PendingIntent.FLAG_UPDATE_CURRENT);
有关取消报警你有过同样的
ID 您用于集
。
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, id,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);