Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Vilian
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 88
19.08.2012, 23:38     Проверить интернет даже когда есть wifi #1
Как реализовать проверку интернета, работающую даже в том случае, когда есть wifi-сеть, но по этой сети интернет не раздается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2012, 23:38     Проверить интернет даже когда есть wifi
Посмотрите здесь:

Android WiFi и энергосбережение
Android Как при запуске проверить включен ли обычный интернет?
Android wifi чат
Android Как узнать есть ли фронтальная камера на устройстве и если есть, то использовать ее?
Android Как сделать так, чтобы табы в Action Bar были под ним даже на планшетах
Android Studio 1.0.2 Не запускает даже Hello World! Android
Как создать массив который сохраняет свои значение даже после закрытия приложения Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.08.2012, 19:18     Проверить интернет даже когда есть wifi #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;
        }
        
    }
Vilian
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 88
21.08.2012, 19:34  [ТС]     Проверить интернет даже когда есть wifi #3
Цитата Сообщение от YAUHEN Посмотреть сообщение
if(lookupHost("www.8tracks.com") == -1)
хм, а если этот сайт будет недоступен ?
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.08.2012, 19:41     Проверить интернет даже когда есть wifi #4
таки не всё лишнее убрал
проверяйте гугловые днсы
https://developers.google.com/speed/...dns/docs/using
если они здохнут то юзер получит некоторое неудобство но ему будет пох потому как это будет конец света.
в любом случае алгоритм таков что надо проверять ипы сайты днсы и если "ответа нет" в виде эксепшона и тд и тп - интернета нет. метода наподобие "context.isDeviceConnectedToInternet()" я не нашёл.
Vilian
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 88
21.08.2012, 20:24  [ТС]     Проверить интернет даже когда есть wifi #5
YAUHEN, спасибо за совет.
kvaka
 Аватар для kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
22.08.2012, 10:17     Проверить интернет даже когда есть wifi #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);
И не забываем писать соответствующие разрешения в манифесте.
Slimmy
 Аватар для Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
22.08.2012, 14:47     Проверить интернет даже когда есть wifi #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;
}
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
22.08.2012, 14:53     Проверить интернет даже когда есть wifi #8
kvaka,
Slimmy,
я не проверял конечно ваш код но у меня есть 1 тест кейс:
берём 2 девайса.
на первом у нас включён HDSPA и WiFi Hotspot (раздаём интернеты)
подключаемся со второго девайса к первому по WiFi. интернетики есть.
на первом девайсе выключаем интернет (хотспот продолжает работать)
на девайсе номер 2 интернетика нет хотя всё успешно законекчено к девайсу номер 1.

ваше решение будет работать в такой ситуации?
тесткейс на мой взгляд довольно адекватный ввиду того что существует куча таблеток без возможности подключения к мобильному интернету но с WiFi(самому приходилось часто так делать).
Vilian
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 88
22.08.2012, 14:57  [ТС]     Проверить интернет даже когда есть wifi #9
присоединяюсь к вопросу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 14:59     Проверить интернет даже когда есть wifi
Еще ссылки по теме:

Не выводится Диалог, когда нет интернет подключения Android
Android Service, работающий даже после выключения пользователем приложения Android
Android Когда приложение удаляешь даже из списка открытых приложений
Android Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено
Android Есть ли сервис, который может проверить твою иконку на наличие АП?

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

Или воспользуйтесь поиском по форуму:
Slimmy
 Аватар для Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
22.08.2012, 14:59     Проверить интернет даже когда есть wifi #10
Цитата Сообщение от YAUHEN Посмотреть сообщение
kvaka,
Slimmy,
я не проверял конечно ваш код но у меня есть 1 тест кейс:
берём 2 девайса.
на первом у нас включён HDSPA и WiFi Hotspot (раздаём интернеты)
подключаемся со второго девайса к первому по WiFi. интернетики есть.
на первом девайсе выключаем интернет (хотспот продолжает работать)
на девайсе номер 2 интернетика нет хотя всё успешно законекчено к девайсу номер 1.

ваше решение будет работать в такой ситуации?
тесткейс на мой взгляд довольно адекватный ввиду того что существует куча таблеток без возможности подключения к мобильному интернету но с WiFi(самому приходилось часто так делать).
Не могу ответить на данный вопрос, по-скольку только недавно начал вкуривать Android. Я бы сказал pre-junior еще . Но этот момент в будущем постараюсь учесть. Возьму на заметку, спасибо.
Yandex
Объявления
22.08.2012, 14:59     Проверить интернет даже когда есть wifi
Ответ Создать тему
Опции темы

Текущее время: 18:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru