1.首先,看一下系统自带的 判断网络连接的方法:
public static boolean isConnect(Context context){
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);//获取状态
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
State mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
State hipri = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE_HIPRI).getState();
//判断wifi已连接的条件
if(wifi == State.CONNECTED||wifi==State.CONNECTING
||mobile == State.CONNECTED||hipri == State.CONNECTED){
return true;
}else{
return false;
}
}
注意:该方法 在牵扯到 IPV4连接ARM设备的时候,判断是无效的,适用于WIFI模块连接,手机上可以实现网络是否连接的判断结果
2.第二种,超实用方法,访问百度网址或者比较大型企业网址;个人推介
public static final boolean isConnectBaiDu(){
new Thread(new Runnable() {
@Override
public void run() {
try {
//System.out.println("请求。。https://www.baidu.com");
URL url = new URL("https://www.baidu.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//请求方式
conn.setRequestMethod("GET");
conn.setConnectTimeout(5*1000);
if(conn.getResponseCode() == 200){
System.out.println("网络已连接");
isConn=true;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("网络异常");
isConn=false;
}
}
}).start();
return isConn;
}
3. PC电脑流行的一种方式,ping ip/域名
/*
* @author zxf
* @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
* @return
*/
public static final boolean ping() {
String result = null;
try {
String ip = "58.217.200.112";// ping 的地址,可以换成任何一种可靠的外网
Process p = Runtime.getRuntime().exec("ping -c 3 -w 1000 " + ip);// ping网址3次
// 读取ping的内容,可以不加
InputStream input = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
StringBuffer stringBuffer = new StringBuffer();
String content = "";
while ((content = in.readLine()) != null) {
stringBuffer.append(content);
}
Log.i("------ping-----", "result content : " + stringBuffer.toString());
// ping的状态
int status = p.waitFor();
if (status == 0) {
result = "success";
return true;
} else {
result = "failed";
}
} catch (IOException e) {
result = "IOException";
} catch (InterruptedException e) {
result = "InterruptedException";
} finally {
Log.i("----result---", "result = " + result);
}
return false;
}