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

package mark.zeng;   
   
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;   
    }  
更加严谨的写法: 
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;   
    } 

 

posted @ 2016-07-14 14:14  星辰之力  阅读(465)  评论(0编辑  收藏  举报