1、利用ConnectivityManager取得系统的Context.CONNECTIVITY_SERVICE,需添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
public boolean isConnect() {
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager connectivity = (ConnectivityManager) this.getSystemService
(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
// 获取网络连接管理的对象
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null) {
// 判断当前网络是否已经连接
if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
缺点:检测不够准确、及时
2、连接一个网址,判断是否连接上
1〉socket
public boolean isConnect() {
boolean isConn = true;
try {
Socket socket = new Socket();
// socket.connect(new InetSocketAddress("www.baidu.com",80),3000);//用域名会抱错,IP地址不会抱错
socket.connect(new InetSocketAddress("202.108.22.5",80),3000);//设置连接地址、端口号、超时时间
isConn = socket.isConnected();
} catch (Exception e) {
System.out.println(e.toString());
isConn = false;
}
System.out.println(isConn);
return isConn;
}
2> http 不受域名限制
public boolean isConnect() {
boolean isConn = true;
try {
//设置超时时间
HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a
connection is established.
HttpConnectionParams.setConnectionTimeout(httpParameters, 2000);// Set the default socket timeout
(SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data.
HttpConnectionParams.setSoTimeout(httpParameters, 4000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
//检测网络
String httpUrl = "http://www.baidu.com";
HttpGet request = new HttpGet(httpUrl);
HttpResponse response = httpClient.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
isConn = true;
} else {
isConn = false;
}
} catch (Exception e) {
System.out.println(e.toString());
isConn = false;
}
System.out.println(isConn);
return isConn;
}