標籤:
Android裡判斷是否可以上網,常用的是如下方法:
?
| 1234567891011121314 |
/** * 檢測網路是否串連 * * @return */private boolean isNetworkAvailable() { // 得到網路連接資訊 ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // 去進行判斷網路是否串連 if (manager.getActiveNetworkInfo() != null) { return manager.getActiveNetworkInfo().isAvailable(); } return false;} |
但是,有時候我們串連上一個沒有外網串連的WiFi或者需要輸入帳號和密碼才能連結外網的網路,就會出現雖然網路可用,但是外網卻不可以訪問。針對這種情況,一般的解決辦法就是ping一個外網,如果能ping通就說明可以真正上網,代碼如下
?
| 1234567891011121314151617181920212223242526272829303132333435 |
* @author sichard * @category 判斷是否有外網串連(普通方法不能判斷外網的網路是否串連,比如串連上區域網路) * @return */ 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; |
推推族,免費得門票,遊景區:www.tuituizu.com
結伴旅遊,一個免費的交友網站:www.jieberu.com
Android 判斷是否能真正上網