现在的位置: 首页 > 移动开发 > 正文

android 网络判断

2019年09月01日 移动开发 ⁄ 共 3176字 ⁄ 字号 评论关闭

转自

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;  
}  


更加严谨的写法:

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;  
}

抱歉!评论已关闭.