protected boolean isConnectInternet()
{
ConnectivityManager mConnectivity=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager mTelephony=(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
//检查网路连接,如果无网络可用,就不需要进行联网操作
NetworkInfo info=mConnectivity.getActiveNetworkInfo();
if(info==null || !mConnectivity.getBackgroundDataSetting())
{
return false;
}
//判断网路连接类型,只有在3G或wifi里进行数据更新
int netType=info.getType();
int netSubType=info.getSubtype();
if(netType==ConnectivityManager.TYPE_WIFI)
{
return info.isConnected();
}else if(netType==ConnectivityManager.TYPE_MOBILE
&& netSubType==TelephonyManager.NETWORK_TYPE_UMTS
&& !mTelephony.isNetworkRoaming())
{
return info.isConnected();
}else {
return false;
}
}
/**
* 判断网络状态是否可用
*
* @return true: 网络可用 ; false: 网络不可用
*/
public boolean isConnectInternet() {
ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = conManager.getActiveNetworkInfo();
if (networkInfo != null) { // 注意,这个判断一定要的哦,要不然会出错
return networkInfo.isAvailable();
}
return false;
}
在 AndroidManifest.xml 中加上 检查网络的权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
/**
* 获取网络类型
*
* NETWORK_TYPE_CDMA 网络类型为CDMA
* NETWORK_TYPE_EDGE 网络类型为EDGE
* NETWORK_TYPE_EVDO_0 网络类型为EVDO0
* NETWORK_TYPE_EVDO_A 网络类型为EVDOA
* NETWORK_TYPE_GPRS 网络类型为GPRS
* NETWORK_TYPE_HSDPA 网络类型为HSDPA
* NETWORK_TYPE_HSPA 网络类型为HSPA
* NETWORK_TYPE_HSUPA 网络类型为HSUPA
* NETWORK_TYPE_UMTS 网络类型为UMTS
*
* 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO
*/