/**
* 檢測網絡是否連接
*
* @return
*/
private
boolean
isNetworkAvailable() {
// 得到網絡連接信息
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 去進行判斷網絡是否連接
if
(manager.getActiveNetworkInfo() !=
null
) {
return
manager.getActiveNetworkInfo().isAvailable();
}
return
false
;
}
public static final boolean ping() {
String result = null;
try {
String ip = "www.baidu.com";// ping 的地址,可以換成任何一種可靠的外網
Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + 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.d("------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.d("----result---", "result = " + result);
}
return false;
}
要監測網絡請求的真實性,這個方法纔是最爲有效的!! 設置一個連接超時爲1s的請求,(只要百度的網絡沒有問題,這個方法就不會有啥問題)
public static boolean isOnline() {
URL url;
try {
url = new URL("https://www.baidu.com");
URLConnection conn = url.openConnection();
conn.setConnectTimeout(500);
InputStream inputStream = conn.getInputStream();
return true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}