DeviceNetworkInformation: что есть что? - PullRequest
0 голосов
/ 02 марта 2012

Я хочу проверить, доступно ли какое-либо подключение к Интернету, т. Е. Можно ли запустить веб-запросы, которые ожидаются успешно.

IsCellularDataEnabled - это правда, если есть доступный GPRS / 3G / и т. Д.?
IsNetworkAvailble - это правда, если ГОЛОСОВЫЕ ВЫЗОВЫ возможны, или это тоже как-то связано с интернетом?
IsCellularDataRoamingEnabled - Должен ли я вообще быть обеспокоен этим? (Я знаю, что такое роуминг данных ...)
IsWifiAvailable - Если это значение false, я все еще могу получить интернет от 3G.

Итак, что я ищу:

if (/*something*/){ //you can use the internet
}

спасибо

(РЕДАКТИРОВАТЬ: у меня нет готового устройства, в противном случае я бы просто попробовать его :))

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

IsNetworkAvailable верно, если есть какое-либо соединение для передачи данных, независимо от того, какое (GPRS, 3G, роуминг, WiFi или через USB-кабель).

IsCellularDataEnabled истина, если телефон подключен через мобильное соединение для передачи данных. Он не дает никакого статуса о голосовых вызовах, а только данные.

IsCellularDataRoamingEnabled : пользователь подключен через мобильное соединение для передачи данных через третьего провайдера (роуминг). Вы должны использовать только минимальное количество трафика, потому что данные роуминга часто дороги для пользователя. (Из-за этого вы можете проверить этот статус)

IsWifiAvailable Значение true, если вы подключены через WiFi. Если false, то может быть мобильное соединение для передачи данных через 3G и т. Д.

Итак, если вы хотите знать, ЕСЛИ есть какое-то соединение, которое вы можете использовать IsNetworkAvailable - все остальные состояния дают вам только более подробную информацию о том, какое соединение существует.

2 голосов
/ 02 марта 2012
0 голосов
/ 04 марта 2012

Ваш вопрос содержит ложное предположение.

Вы хотите знать, есть ли соединение, поэтому ваш запрос может быть успешно выполнен. Только противоположность может быть правдой, хотя. Вы можете только знать, что, если нет соединения, запрос определенно потерпит неудачу.

Существует множество причин, по которым невозможно выполнить успешный веб-запрос, даже если доступно подключение к внешней сети.

Вы ДОЛЖНЫ код для обработки сбоя запроса, даже если соединение установлено.

Вещи, которые могут помешать успешному выполнению запроса даже при наличии соединения:

  • прокси-серверы или брандмауэры, блокирующие запрос
  • при подключении к локальной сети, которая не имеет доступа к целевому серверу
  • медленное сетевое соединение, вызывающее тайм-аут запроса
  • целевой сервер отключен / отключен / недоступен
  • ошибка на сервере
  • и т.д.. ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...