使用一个警报管理器取消另一个

时间:2016-04-17 17:19:06

标签: android alarmmanager

我正在做一个提醒申请。它将提醒一段时间的持续时间。例如,每隔五分钟提醒一小时。在这种情况下,我试图设置两个警报。一个用于每五分钟做一次提醒,另一个用于在一小时后取消提醒闹钟。这是我的代码。

private void createIntervalNotification(int reminder, int dhour, int dminute){ //reminder in min
    int interval = (reminder)*60*1000;
    AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+interval, interval, getPendingIntent(this,REMINDER_ID));

    int duration = (dhour*60 + dminute)*60*1000;
    am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+duration,getPendingIntent(this,CANCEL_REMINDER_ID));
}

private static PendingIntent getPendingIntent(Context ctxt, int id) {
    Intent intent1 = new Intent(ctxt, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(ctxt, id,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
    return pendingIntent;
}

我有一些问题要做(设置提醒5分钟持续1小时)。

1)我可以用我的方法做到这一点吗?使用一个闹钟取消另一个闹钟?

2)两个警报都可以共享一个broadcastReceiver吗?如果是,那么如何区分它会被哪个警报调用?

3)是否有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

取消闹钟几乎与设置闹钟完全相同。您只需要在AlarmManager上调用另一种方法来取消,而不是创建。只需确保AlarmManager中的待定意图和广播ID相同。

通过在意图上设置额外内容来区分警报。

相关问题