在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); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){ if (mConnectivityManager != null) { NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mWiFiNetworkInfo != null) { 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) { if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { return NETWORK_WIFI; } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { return NETWORK_MOBILE; } } } } return NO_NETWORK; } }
|