2017-01-29 10 views
0

Я использовал BroadcastReceiver для IntentFilter с именем android.net.conn.CONNECTIVITY_CHANGE, но при проверке через эмулятор я узнал, что даже если нет истинного подключения к Интернету, если мобильные данные включены в эмулятор, это показывает, что соединение жив.Действительно ли BroadcastReceiver для android.net.conn.CONNECTIVITY_CHANGE проверяет подключение к Интернету?

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 и 7 выше только потому, что любой из мобильных данных/Wi-Fi или оба включены и фактическое состояние недоступности Интернета не отражается.

Есть ли способ решить эту проблему?

ответ

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 увольняется, когда происходят изменения в сети. Либо сеть подключена - отключена, либо наоборот