Android 引导完成后,服务中的BroadcastReceiver不工作

Android 引导完成后,服务中的BroadcastReceiver不工作,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,启动完成后,我正在使用服务收听广播。但引导完成时,BroadcastReceiver未注册。如果我不是使用服务而是使用广播接收器来监听引导,那么它就可以工作。当我向一个服务注册它时,它不存在。我做错了什么?代码如下所示 private BroadcastReceiver sim_change; public void onCreate() { // TODO Auto-generated method stub super.onCreate(); IntentFilte

启动完成后,我正在使用服务收听广播。但引导完成时,BroadcastReceiver未注册。如果我不是使用服务而是使用广播接收器来监听引导,那么它就可以工作。当我向一个服务注册它时,它不存在。我做错了什么?代码如下所示

private BroadcastReceiver sim_change;
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    IntentFilter filter = new IntentFilter();
    filter.addAction(action);

    sim_change = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "Boradcast Receiver registered successfully", Toast.LENGTH_LONG).show();

        }
    };

    registerReceiver(sim_change, filter);

}@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    unregisterReceiver(sim_change);
    Toast.makeText(getApplicationContext(), "Boradcast Receiver unregistered successfully", Toast.LENGTH_LONG).show();

}

您必须在清单中注册
BOOT\u COMPLETED
。从服务中注册它是没有意义的,因为服务不会在启动时运行以注册它。

您不能从
服务中注册
boot\u COMPLETED
,因为重新启动会删除该注册

您必须从您的
广播接收器执行此操作


有很多方法可以处理启用/禁用功能-或者使用建议的
setComponentEnabledSetting()
,或者仅通过在应用程序的共享首选项中存储一个值,您可以在服务启动时检查该值。

您是如何启动服务的?您使用的是哪个Anroid SDK?它是4.0?通过调用开始服务的活动是的,我知道我试过了,但问题是我想启用广播接收器,然后禁用“打开”按钮click@Akhil要使用
PackageManger
禁用/重新启用接收器,您仍然需要在清单中注册广播,然后调用
setComponentEnabledSetting()
更改其启用状态。如果你在工作中遇到困难,你应该把试图完成它的代码作为另一个问题发布。这与您的代码无法接收广播的原因完全无关。