hcwzwx 发表于 2015-10-1 11:38:20

network: Android 网络判断(wifi、3G与其他)(转)

  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.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;   
    }
更加严谨的写法:
public static boolean checkNet(Context context) {   
         
      try {   
            ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
            if (connectivity != null) {   
               
                NetworkInfo info = connectivity.getActiveNetworkInfo();   
                if (info != null && info.isConnected()) {   
                  
                  if (info.getState() == NetworkInfo.State.CONNECTED) {   
                        return true;   
                  }   
                }   
            }   
      } catch (Exception e) {   
      return false;   
}   
      return false;   
    }
页: [1]
查看完整版本: network: Android 网络判断(wifi、3G与其他)(转)