注册方式:
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" />