package mark.zhang;

import java.util.List;

import android.content.Context;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;

public class NetworkProber {

 /**
  * 网络是否可用
  *
  * @param activity
  * @return
  */
 public static boolean isNetworkAvailable(Context context) {
  ConnectivityManager connectivity = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  if (connectivity == null) {
  } else {
   NetworkInfo[] info = connectivity.getAllNetworkInfo();
   if (info != null) {
    for (int i = 0; i < info.length; i++) {
     if (info[i].getState() == NetworkInfo.State.CONNECTED) {
      return true;
     }
    }
   }
  }
  return false;
 }

 /**
  * Gps是否打开
  *
  * @param context
  * @return
  */
 public static boolean isGpsEnabled(Context context) {
  LocationManager locationManager = ((LocationManager) context
    .getSystemService(Context.LOCATION_SERVICE));
  List<String> accessibleProviders = locationManager.getProviders(true);
  return accessibleProviders != null && accessibleProviders.size() > 0;
 }

 /**
  * wifi是否打开
  */
 public static boolean isWifiEnabled(Context context) {
  ConnectivityManager mgrConn = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  TelephonyManager mgrTel = (TelephonyManager) context
    .getSystemService(Context.TELEPHONY_SERVICE);
  return ((mgrConn.getActiveNetworkInfo() != null && mgrConn
    .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel
    .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
 }

 /**
  * 判断当前网络是否是wifi网络
  * if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //判断3G网
  *
  * @param context
  * @return boolean
  */
 public static boolean isWifi(Context context) {
  ConnectivityManager connectivityManager = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
  if (activeNetInfo != null
    && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {
   return true;
  }
  return false;
 }

 /**
  * 判断当前网络是否是3G网络
  *
  * @param context
  * @return boolean
  */
 public static boolean is3G(Context context) {
  ConnectivityManager connectivityManager = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
  if (activeNetInfo != null
    && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
   return true;
  }
  return false;
 }
}

还有两个方法判断网络是否可用:

public static boolean isNetworkAvailable_00(Context context) {
  ConnectivityManager cm = ((ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE));
  if (cm != null) {
   NetworkInfo info = cm.getActiveNetworkInfo();
   if (info != null && info.isConnectedOrConnecting()) {
    return true;
   }
  }
  return false;
 }

 public static boolean isNetworkAvailable_01(Context context) {
  ConnectivityManager cm = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo network = cm.getActiveNetworkInfo();
  if (network != null) {
   return network.isAvailable();
  }
  return false;
 }