boot_completed动作以编程方式注册而不是在清单中注册

时间:2014-12-15 19:06:46

标签: android broadcastreceiver android-manifest intentfilter bootcompleted

我试图以编程方式注册接收器以执行操作android.intent.action.BOOT_COMPLETED, 即 让我拿一个名为BootReceiver的接收器类扩展BroadCastReceiver类。

所以在我的一个活动课中,我编写了这段代码,

IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action.BOOT_COMPLETED");
        intentFilter.addAction("android.intent.action.PACKAGE_REPLACED");

        BootReceiver receiver = new BootReceiver();
        getApplicationContext().registerReceiver(receiver, intentFilter);

我试图将app以及boot_completed动作更新到同一个广播接收器。

所以我尝试的是,  我通过注册上面的代码来运行活动,然后重新启动设备。我没有得到BootReceiver onReceive()方法的任何回调。

是否可以以编程方式为boot_completed操作声明接收器,或者是否有必要在清单文件中声明接收器。

实际上我的要求是以编程方式声明它。

提前致谢。

1 个答案:

答案 0 :(得分:5)

  

我试图以编程方式为actionandroid.intent.action.BOOT_COMPLETED注册一个接收器

当调用registerReceiver()时,启动将很快发生。注册android.intent.action.BOOT_COMPLETED的唯一地方是清单,因为即使您没有正在运行的进程,它也可以注册对广播的兴趣。

  

是否可以以编程方式为boot_completed操作声明接收器

没有。你可以申请,但它永远不会有效。

  

是否有必要在清单文件中声明接收器

如果你想要一个人工作,是的。