0

我已阅读有关如何检查未决意图的警报是否存在的有关 stackoverflow 的问题。

我检查我的警报是否以这种方式存在:

boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
    new Intent("com.my.package.MY_UNIQUE_ACTION"), 
    PendingIntent.FLAG_NO_CREATE) != null);

我设置了一个警报并检查它是否存在,然后取消警报。警报实际上已取消,但如果再次运行上述语句,它仍然返回 true。

我已经在清单中静态注册了广播接收器。

我设置和取消闹钟的方法是这样的:

    public static void cancelRecurringAlarm(Context context, String intentAction) {
    Logger.mlog(DEBUG_TAG, "cancelRecurringAlarm called with intent " + intentAction);
    Intent reminder = new Intent();
    reminder.setClass(context, <receiverClassName>);
    reminder.setAction(intentAction);
    PendingIntent recurringReminder = PendingIntent.getBroadcast(context, 0, reminder, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarms.cancel(recurringReminder);
}

public static void setRecurringAlarm(String intentAction, Context context, long timeInMs) {
    Logger.mlog(DEBUG_TAG, "setRecurringAlarm called with intent " + intentAction);

    Intent reminder = new Intent();
    reminder.setClass(context,  <receiverClassName>);
    reminder.setAction(intentAction);
    PendingIntent recurringReminder = PendingIntent.getBroadcast(context, 0, reminder, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarms.setRepeating(AlarmManager.RTC, timeInMs, AlarmManager.INTERVAL_DAY, recurringReminder);
}
4

1 回答 1

0

您获得的布尔值始终为,因为您正在取消警报而不是挂起的意图。因此在 cancelRecurringAlarm() 中取消挂起的意图 recurringReminder.cancel()。然后您将在取消警报后将布尔值设为false

于 2013-09-02T05:23:41.577 回答