Android:有没有办法阻止在BootReceiver中触发AlarmReceiver

时间:2011-11-25 11:46:33

标签: android broadcastreceiver alarmmanager

我正在使用Boot接收器来触发AlarmManager,因此它每分钟都会重复它的任务。我希望用户有app选项来启用/禁用在每次重复AlarmManager时执行的操作。到目前为止,我只使用了一个蹩脚的解决方案。我在SharedPreferences中设置了用户的首选项,并且在AlarmManager的每次重复中,我在SharedPreferences中检查用户的首选项,并根据此首选项执行或忽略该功能。

到目前为止,据我所知,没有办法从内部完全破坏AlarmManager。但我可能错了。

此外,由于启动接收器在AndroidManifest.xml中注册,并且只有在调用onReceive时才存在BroadcastReceiver,因此可能无法获取对AlarmManager对象的引用,因此我可以使用AlarmManager从外部取消警报。取消。但我可能错了这一切。

所以我想问一下,如果我弄错了这一切,或者是否有某种方法可以完全销毁/取消在Boot上启动的AlarmManager(从AlaramManager内部或外部,无关紧要)。有任何想法吗?提前致谢

1 个答案:

答案 0 :(得分:5)

您可以使用相同的待处理意图随时取消闹钟。

Intent intent = new Intent(show.this, TimeAlarm.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(show.this, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);

        <Alarm_Manager_Object>.cancel(pendingIntent);