我应该如何配置广播接收器以使我的应用响应无线网络可用性的变化。当应用程序没有运行时,我真的不在乎对它作出反应。
我在这里要完成的是,当应用程序运行时,我需要让本地数据库与服务器上的副本保持同步。如果由于某种原因我失去了连接,我需要知道何时尝试重新连接是有意义的。
答案 0 :(得分:2)
由于您在应用程序未运行时不关心它,我建议您在代码中注册接收器,而不是将其放入清单...
IntentFilter filter = new IntentFilter( WifiManager.WIFI_STATE_CHANGED_ACTION );
context.registerReceiver( wifiStateRec, filter);
WifiManager wifim = (WifiManager) context.getSystemService( Context.WIFI_SERVICE );
state = wifim.getWifiState(); // get initial state
然后在完成后调用unregisterReceiver()。
您的接收器可能如下所示:
protected BroadcastReceiver wifiStateRec = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
assertTrue( WifiManager.WIFI_STATE_CHANGED_ACTION.equalsIgnoreCase( intent.getAction() ) );
state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,-1);
String msg;
switch(state) {
case WifiManager.WIFI_STATE_DISABLED:
msg = "it is disabled";
break;
case WifiManager.WIFI_STATE_ENABLED:
msg = "it is enabled";
break;
case WifiManager.WIFI_STATE_DISABLING:
msg = "it is switching off";
break;
case WifiManager.WIFI_STATE_ENABLING:
msg="wifi is getting enabled";
break;
default:
msg="not working properly";
break;
}
Log.i(CTAG, "Wifi state = " + msg );
}
};
此功能中的部分代码最初来自此question。