0

我正在使用服务在启动完成后收听广播。但是启动完成时广播接收器没有注册。如果我使用广播接收器而不是服务来侦听启动完成它可以工作。当我使用服务注册它时它不会。我究竟做错了什么?代码如下。

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();

}
4

2 回答 2

0

您必须BOOT_COMPLETED在 Manifest 中注册。从服务注册它是没有意义的,因为服务不会在启动时运行以注册它。

于 2012-07-02T05:57:03.520 回答
0

您无法BOOT_COMPLETED从 a中注册,Service因为重新启动会删除该注册。

你必须从你的BroadcastReceiver.

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

于 2013-08-05T08:56:05.230 回答