首页 > 代码库 > network: Android 网络判断(wifi、3G与其他)

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

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