在Android版本6.0之前只能使用NetworkInfo获取网络状态

6.0之后NetworkInfo被弃用,应当使用Network来获取

public class NetWorkStateUtils {
private final static int NO_NETWORK = 0;
private final static int NETWORK_WIFI = 1;
private final static int NETWORK_MOBILE = 2;

public static int networkConnected(Context context) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//Android版本在6.0之前只能使用NetworkInfo获取网络状态
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
if (mConnectivityManager != null) {
NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mWiFiNetworkInfo != null) {
//WIFI
if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return NETWORK_WIFI;
}
//移动数据
else if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return NETWORK_MOBILE;
}
}
}
}else {
if (mConnectivityManager != null) {
Network networks = mConnectivityManager.getActiveNetwork();
NetworkCapabilities networkCapabilities = mConnectivityManager.getNetworkCapabilities(networks);
if (networkCapabilities != null) {
//WIFI
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return NETWORK_WIFI;
}
//移动数据
else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return NETWORK_MOBILE;
}
}
}
}
//无网络
return NO_NETWORK;
}
}