2010-11-11 1 views
3

У меня есть это приложение для Android, которое требует загрузки данных с удаленного сервера через Интернет. это обновление-функционал, очевидно, требует, чтобы устройство не только подключалось к какой-то сети, но и к Интернету.Как определить, если интернет-соединение в настоящее время доступно и активно на устройстве Android?

так: хотите запланировать службу обновлений до какой-либо даты, и когда она начнется, она должна определить, действительно ли она может достичь целевого сервера или нет. поэтому простой «это устройство, подключенное к Wi-Fi?»? недостаточно, поскольку устройство может быть подключено к беспроводной сети, которая не предлагает доступ в Интернет. что-то вроде PING ...

Какой простой/лучший способ определить, есть ли доступ к Интернету, то есть сервер доступен?

ответ

1

Посмотрите на это answer здесь, на StackOverflow. Это должно быть именно то, что вы ищете.

2

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

4
boolean connected;    
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
      if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) { 
       //we are connected to the internet 
       connected = true; 
      } 
      else 
       connected = false; 

добавить одаривать: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

+2

проблема: что, если мое устройство подключено к какой-либо сети Wi-Fi, которая НЕ работает как интернет-шлюз? – xenonite

0

Here является лучшим ответом на проблему:

Устройство соединяется с маршрутизатором, но нет шлюза интернет активен.

Смежные вопросы