android:重启后注册接收者

时间:2019-01-14 10:12:55

标签: android

在设备启动时,我创建了一个名为BroadcastReceiver的{​​{1}}:

Autostart

这是应该被称为的服务:

public class Autostart extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent arg1)
    {
        Log.i("mydebug","autostart");
        Intent intent = new Intent(context, RegisterService.class);
        context.startService(intent);

    }
}

这是我的清单:

public class RegisterService extends Service {


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("mydebug","service");
        BroadcastReceiver receiver = new NetWatcher();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        registerReceiver(receiver, intentFilter);
        return super.onStartCommand(intent, flags, startId);
    }
}

我也以相同的方式在MainActivity中注册NetWatcher。现在,当我启动该应用程序时,Netwatcher会立即被调用,并且每次我更改我的wifi状态时也都会被调用。当我重新启动手机时,自动启动会调用该服务,该服务会注册NetWatcher,该服务也会立即被调用。但是,如果我现在更改wifi状态,什么也没发生

1 个答案:

答案 0 :(得分:0)

在您的服务onCreate()中注册NetWatcher 尝试将操作更改为android.net.conn.CONNECTIVITY_CHANGE而不是WifiManager.NETWORK_STATE_CHANGED_ACTION