注册方式:
1.
<receiver android:name="包名.ConnectionChangeReceiver" android:label="NetworkConnection" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
2.
/*
* 手动注册网络状态变化,或在清单文件配置。
*/
private void registerNetStateReceiver() {
Log.i("--bxm register netstate receiver...");
mConnectivityReceiver = new ConnectionChangeReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mConnectivityReceiver, filter);
}
其中 ConnectionChangeReceiver类为:
public class ConnectionChangeReceiver extends BroadcastReceiver {
private final static NetConnectionStateMgr dataStateMgr = NetConnectionStateMgr.getInstance();
@Override
public void onReceive(Context context, Intent intent) {
Log.i("--ConnectivityReceiver.onReceive()...");
String action = intent.getAction();
Log.i("--action=" + action);
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
Log.i("--Network Type = " + networkInfo.getTypeName());
Log.i("--Network State = " + networkInfo.getState());
if (networkInfo.isConnected()) {
Log.i("--bxm Network connected");
dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTIONED);
}
} else {
Log.e("--bxm Network unavailable");
dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTION_UNAVAILABLE);
}
dataStateMgr.notifyDataSetChanged();
}
}
上面的NetConnectionStateMgr是自己实现的观察者类,方便用而已。
注意权限配置:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />