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

Luk*_*as1 2 android broadcastreceiver alarmmanager

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

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

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

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

Man*_*esh 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);
Run Code Online (Sandbox Code Playgroud)