Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Vilian
0 / 0 / 3
Регистрация: 17.12.2010
Сообщений: 88
#1

Проверить интернет даже когда есть wifi - Программирование Android

19.08.2012, 23:38. Просмотров 2180. Ответов 9
Метки нет (Все метки)

Как реализовать проверку интернета, работающую даже в том случае, когда есть wifi-сеть, но по этой сети интернет не раздается?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2012, 23:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверить интернет даже когда есть wifi (Программирование Android):

Когда приложение удаляешь даже из списка открытых приложений
То есть если у меня есть приложение состоящее из одного активити и я не просто...

Отправка сообщения когда появится интернет
Всем привет! Такая задача. Пользователь отправляет некоторое сообщение, но...

Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено
Собственно ,сабж в топике

Не выводится Диалог, когда нет интернет подключения
Всем привет приложения должно сработать если есть подключения к интернету а...

Узнать есть ли на устройстве Wifi
Здравствуйте. Вопрос такой как узнать (если это можно) есть ли физически на...

Как при запуске проверить включен ли обычный интернет?
Доброго времени суток. Как при запуске проверить включен ли обычный интернет?...

9
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.08.2012, 19:18 #2
я решил проблему так(это временное решение и возможно будет усовершенствовано со временем):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    private NetworkConnectionListener networkConnectionListener = null; 
    
    @Override
    public void onCreate() {
        networkConnectionListener = new NetworkConnectionListener();
        IntentFilter connectivityChange = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
        registerReceiver(networkConnectionListener, connectivityChange);
        //...
        super.onCreate();
    }
    
    public static int lookupHost(String hostname) {
        InetAddress inetAddress;
        try {
            inetAddress = InetAddress.getByName(hostname);
        } catch (UnknownHostException e) {
            return -1;
        }
        byte[] addrBytes;
        int addr;
        addrBytes = inetAddress.getAddress();
        addr = ((addrBytes[3] & 0xff) << 24)
                | ((addrBytes[2] & 0xff) << 16)
                | ((addrBytes[1] & 0xff) << 8)
                |  (addrBytes[0] & 0xff);
        return addr;
    }
 
    public class NetworkConnectionListener extends BroadcastReceiver {
 
        @Override
        public void onReceive(Context context, Intent arg1) {
            new Thread(new ConnectionRun()).start();
        }
 
    }
    
    private class ConnectionRun implements Runnable{
        @Override
        public void run() {
            boolean isNetworkConnected = false;
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );
            NetworkInfo info = connectivityManager.getActiveNetworkInfo();
                if (info != null && info.getState() == android.net.NetworkInfo.State.CONNECTED) {
                    if(lookupHost("www.8tracks.com") == -1)
                        isNetworkConnected = false;
                    else
                        isNetworkConnected = true;
                }else
                    isNetworkConnected = false;
            return isNetworkConnected;
        }
        
    }
2
Vilian
0 / 0 / 3
Регистрация: 17.12.2010
Сообщений: 88
21.08.2012, 19:34  [ТС] #3
Цитата Сообщение от YAUHEN Посмотреть сообщение
if(lookupHost("www.8tracks.com") == -1)
хм, а если этот сайт будет недоступен ?
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.08.2012, 19:41 #4
таки не всё лишнее убрал
проверяйте гугловые днсы
https://developers.google.com/speed/public-dns/docs/using
если они здохнут то юзер получит некоторое неудобство но ему будет пох потому как это будет конец света.
в любом случае алгоритм таков что надо проверять ипы сайты днсы и если "ответа нет" в виде эксепшона и тд и тп - интернета нет. метода наподобие "context.isDeviceConnectedToInternet()" я не нашёл.
1
Vilian
0 / 0 / 3
Регистрация: 17.12.2010
Сообщений: 88
21.08.2012, 20:24  [ТС] #5
YAUHEN, спасибо за совет.
0
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
22.08.2012, 10:17 #6
Если я не ошибаюсь, то все значительно проще.
Вот вроде классический тип проверки на различные типы подключения:
Java
1
2
3
4
ConnectivityManager connectivityManager;
            internetAvailable = 
                       (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED|| 
                        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI  ).getState() == NetworkInfo.State.CONNECTED);
И не забываем писать соответствующие разрешения в манифесте.
0
Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
22.08.2012, 14:47 #7
Я пользуюсь вот таким методом. Вполне себе работает.
Java
1
2
3
4
5
6
7
8
public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
}
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
22.08.2012, 14:53 #8
kvaka,
Slimmy,
я не проверял конечно ваш код но у меня есть 1 тест кейс:
берём 2 девайса.
на первом у нас включён HDSPA и WiFi Hotspot (раздаём интернеты)
подключаемся со второго девайса к первому по WiFi. интернетики есть.
на первом девайсе выключаем интернет (хотспот продолжает работать)
на девайсе номер 2 интернетика нет хотя всё успешно законекчено к девайсу номер 1.

ваше решение будет работать в такой ситуации?
тесткейс на мой взгляд довольно адекватный ввиду того что существует куча таблеток без возможности подключения к мобильному интернету но с WiFi(самому приходилось часто так делать).
0
Vilian
0 / 0 / 3
Регистрация: 17.12.2010
Сообщений: 88
22.08.2012, 14:57  [ТС] #9
присоединяюсь к вопросу.
0
Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
22.08.2012, 14:59 #10
Цитата Сообщение от YAUHEN Посмотреть сообщение
kvaka,
Slimmy,
я не проверял конечно ваш код но у меня есть 1 тест кейс:
берём 2 девайса.
на первом у нас включён HDSPA и WiFi Hotspot (раздаём интернеты)
подключаемся со второго девайса к первому по WiFi. интернетики есть.
на первом девайсе выключаем интернет (хотспот продолжает работать)
на девайсе номер 2 интернетика нет хотя всё успешно законекчено к девайсу номер 1.

ваше решение будет работать в такой ситуации?
тесткейс на мой взгляд довольно адекватный ввиду того что существует куча таблеток без возможности подключения к мобильному интернету но с WiFi(самому приходилось часто так делать).
Не могу ответить на данный вопрос, по-скольку только недавно начал вкуривать Android. Я бы сказал pre-junior еще . Но этот момент в будущем постараюсь учесть. Возьму на заметку, спасибо.
0
22.08.2012, 14:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 14:59
Привет! Вот еще темы с решениями:

Постоянно грузится видеокарта до 99% даже во время простоя. Когда отключаю интернет перестает
Добрый вечер. Заметил проблему что после 15 минут игры фпс падает до 15 а в...

Время от времени, даже когда интернет отключен, самостоятельно включаеться браузер Mozilla и вылазит реклама.
Время от времени, даже когда интернет отключен, самостоятельно включаеться...

Когда подключаюсь к WiFi, перестает работать интернет на компе
Привет всем! Столкнулся с такой проблемой: когда подключаюсь к WiFi, перестает...

Есть интернет, но роутер не раздает WIFI
Доброго времени суток! Нашел wifi-роутер TP-Link TL-WR340GD v3. На ПК...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru