1. ConnectivityManager类
ConnectivityManager
类用来判断网络服务
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
通过NetworkInfo
的状态来判断联网状态,isAvailable()
联网是否就绪,isConnected()
是否已经链接。
networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
NetworkInfo
其他方法
getType()
, 网络类型
ConnectivityManager.TYPE_MOBILE
ConnectivityManager.TYPE_WIFI
isRoaming()
,是否漫游
getState()
,获取连接状态
getDetailedState()
,获取详细状态
isFailover()
,是否连接失败。
需要权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. 监听网络状态
通过广播监听网络状态,action
为ConnectivityManager.CONNECTIVITY_ACTION
。
@Override
protected void onResume() {
super.onResume();
registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
自定义BroadcastReceiver
来捕捉网络状态变化
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
}
}
};