2017-01-29 51 views
0

我使用BroadcastReceiver作爲IntentFilter,名爲android.net.conn.CONNECTIVITY_CHANGE,但是在通過仿真器檢查時,我發現即使沒有與互聯網的真正連接,如果移動數據在仿真器中打開,它將顯示連接活着。用於android.net.conn.CONNECTIVITY_CHANGE的BroadcastReceiver實際上是否檢查互聯網連接?

CASE | MO_DATA | MO_WIFI | PC_INTER | RESP 
---- | ------- | ------- | -------- | ---- 
1 | ON  | ON  | ON  | ON 
2 | ON  | OFF  | ON  | ON 
3 | OFF  | ON  | ON  | ON 
4 | OFF  | OFF  | ON  | OFF 
5 | ON  | ON  | OFF  | ON 
6 | ON  | OFF  | OFF  | ON 
7 | OFF  | ON  | OFF  | ON 
8 | OFF  | OFF  | OFF  | OFF 

的響應顯示ON即使當在箱子5,6 PC沒有互聯網連接和7的上方僅因爲無論移動數據/ WIFI的或兩者都導通和非可用性的實際狀態的互聯網沒有體現出來。

有什麼辦法可以解決這個問題嗎?

回答

2

檢查您是否有互聯網連接的一種方法是向Google.com發出請求,並且如果您收到響應200,則表示您有工作網絡連接,否則無法連接。

如果您將使用CONNECTIVITY MANAGER,那麼無法確定連接的網絡是否具有互聯網連接或無法連接,因爲有時會發生像我們使用WiFi連接但無法連接的情況。希望這可以幫到你..

+0

你說的是一個非常合理的解決方案,但如何檢查與HTTP連接的響應代碼?有沒有辦法做到這一點?得到這樣一個可用的庫是非常有幫助的。 –

+0

看看這個鏈接http://stackoverflow.com/questions/6467848/how-to-get-http-response-code-for-a-url-in-java – Deepesh

0

帶有意向過濾器的BroadcastReceiver android.net.conn.CONNECTIVITY_CHANGE在網絡發生變化時被觸發。無論是網絡連接 - 斷開或反之亦然