在设备启动时,我创建了一个名为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状态,什么也没发生
答案 0 :(得分:0)
在您的服务onCreate()
中注册NetWatcher
尝试将操作更改为android.net.conn.CONNECTIVITY_CHANGE
而不是WifiManager.NETWORK_STATE_CHANGED_ACTION