Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Рабочий способ проверки наличия Интернета / 4 сообщений из 4, страница 1 из 1
05.07.2013, 21:52:10
    #38322483
motorway
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рабочий способ проверки наличия Интернета
Подскажите рабочий способ проверки наличия Интернета (проверяем по заданному URL) для Android.
Есть несколько методов - ping, HTTPUrlConnection, ConnectivityManager.
В Интернете очень много разных примеров, но почти везде какой-то сырой код с ошибками в тех или иных случаях.

Как пишут некоторые разработчики, ping работает не во всех случаях, с 3-м способом тоже бывают проблемы.
Нужно, чтобы не было Exception'ов при разных типах подключения и др.
Какой самый простой и надёжный способ?

Вот есть такой метод:

public static boolean isNetworkAvailable(Context context)
{
return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
}

Кто-нибудь пользовался? У меня пока что вылетает с остановкой приложения.
Про метод isReachable тоже были примеры, которые якобы вылетают.
...
Рейтинг: 0 / 0
06.07.2013, 18:57:22
    #38322884
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рабочий способ проверки наличия Интернета
motorwayПодскажите рабочий способ проверки наличия Интернета (проверяем по заданному URL) для Android.

Это наверное не проверка наличия интернета, а проверка возможности установить связь с конкретным узлом.

Способ только один -- установить соединение, потом, если оно не нужно -- разорвать.

motorwayЕсть несколько методов - ping, HTTPUrlConnection, ConnectivityManager.


Есть класс сокета TCP в стандартном J2SE, кажется java.net.Socket.
В сети думаю полно примеров, как его использовать. Надо открыть соединение и закрыть его тут же.

ping -- это в любом случае не то, это не годится, потому что он даже соединение не устанавливает, и
просто может не быть включён на каком-то хосте. И его часто просто банят на файрволах.

ConnectivityManager что такое -- не представляю.
...
Рейтинг: 0 / 0
06.07.2013, 19:23:59
    #38322897
motorway
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рабочий способ проверки наличия Интернета
MasterZiv, спасибо.
Вот нашёл такой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
try 
	    	
	    	{
	    	
	    	URL url = new URL(urlname);

	    	    HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
	    	    urlc.setRequestProperty("Connection", "close");
	    	    urlc.setConnectTimeout(1000 * 20); // mTimeout is in seconds
	    	            urlc.connect();
	    	    if (urlc.getResponseCode() == 200) {
	    	        return true;
	    	    }
	    		
	    	}
	    	    catch (MalformedURLException e1) {
	    	           
	    	    } 
	    	
	    		catch (IOException e) {
	    	           
	    	    }



Вопрос в том, что нужно писать в обработчике исключений catch. Если там поставить return false, будет ли ошибка? Или что-то обязательно нужно делать?
Также, что будет с этим кодом, если в процессе подключения соединение разорвётся? Как обрабатывать?
...
Рейтинг: 0 / 0
06.07.2013, 23:46:26
    #38323043
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рабочий способ проверки наличия Интернета
motorwayВот есть такой метод:

public static boolean isNetworkAvailable(Context context)
{
return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
}

Кто-нибудь пользовался? У меня пока что вылетает с остановкой приложения
This method requires the caller to hold the permission ACCESS_NETWORK_STATE
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Рабочий способ проверки наличия Интернета / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]