如何取消注册与重复警报关联的BroadcastReciever?

时间:2014-01-23 13:54:00

标签: android android-alarms android-broadcast

我不清楚如何实现这一目标,而且我迷失在Android文档中。我会认为这是一个很常见的情况,所以有人可以告诉我适当的方式来获取BroadcastReceiver所以我可以取消注册它(或指向我正确的方向,这样我可以教育自己)?

设置警报:

registerReceiver(alarmHandler, new IntentFilter("com.blah.alarm"));
PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent("com.blah.alarm"), 0);
AlarmManager am = (AlarmManager) (this.getSystemService( Context.ALARM_SERVICE ));
am.setRepeating(
        AlarmManager.RTC_WAKEUP, someCalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

不要报警:

PendingIntent pi = PendingIntent.getBroadcast(
            this, 0, new Intent("com.blah.alarm", PendingIntent.FLAG_NO_CREATE);
if (pi != null) {
    AlarmManager am = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
    am.cancel(pi);
}
unregisterReceiver(????????); // how do I get alarmHandler ref ??

1 个答案:

答案 0 :(得分:1)

您需要将alarmHandler引用保存在某个变量中,以便在需要调用unregister()时获取它。 Android不提供任何可以调用的方法来获取对它的引用。