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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
#1

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

01.11.2012, 17:00. Просмотров 4185. Ответов 27
Метки нет (Все метки)

Доброго времени суток. Как при запуске проверить включен ли обычный интернет? То есть Передача данных. Спасибо, за ответы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 17:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как при запуске проверить включен ли обычный интернет? (Программирование Android):

Как проверить включен bluetooth или нет? - Программирование Android
Как проверить включен bluetooth или нет? Если да то одно действие а если нет то другое.

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

Как проверить, включен ли checkbox - JavaScript
Подскажите пожалуйста, как правильно и короче сделать запись в JS, при проверке, включен checkbox или нет. <input type="checkbox"...

Как выделить жырним и проверить включен ли чекбокс? - PHP
Есть форма для регистрацыи После заполнения письмо, которое отправлиется формируется вот так: $mess = ' Імя: '.$_POST.' ...

Как проверить, что RadioButton включен. MVVM - C# WPF
Есть радио баттон на форме как узнать чекнут ли он, реализовать шаблоном MVVM? Помогите плз

Как проверить, заданы ли аргументы при запуске программы? - Delphi
Как проверить, заданы ли аргументы при запуске программы?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
02.11.2012, 11:58 #2
1. Создаём класс наследник BroadcastReceiver
Java
1
public class NetworkReceiver extends BroadcastReceiver
2. В манифесте в теге Application указываем
XML
1
2
3
4
5
<receiver android:name=".NetworkReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
 </receiver>
3. Для удобства можно применить паттерн Observer-Observable. Делаем в нашем ресивере внутренний класс
Java
1
2
3
4
5
6
public class InnerObservable extends Observable{
        public void updateData(String data){
            setChanged();
            notifyObservers(data);
        }
}
4. Классы делаем Singleton. Теперь нам ещё нужен контекст.

Java
1
2
3
Context context;
public static NetworkReceiver instance = new NetworkReceiver();
public static InnerObservable observable = instance. new InnerObservable();
5. Добавляем методы "включения-выключения" обсёрвера
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static NetworkReceiver getInstance(){
        return instance;
    }
    
    public void setContext(Context context){
        
         try {
            observable.deleteObserver((Observer) context);
        } catch (Exception e) {
            Log.d("Exceptiion", "in set context");
        }
         this.context = context;
         observable.addObserver((Observer) context);
    }
    
    public void removeInetObserve(Context c){
        observable.deleteObserver((Observer) c);
    }
6. Осталось переопределить метод onReceive:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    public void onReceive(Context ctx, Intent intent) {
        Log.d("tag", "onReceive");
        if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (info.isConnected()) {
                Log.d("Net", "Connected");
                observable.updateData(NETWORK_ENABLE);
            } else if (!info.isConnected()) {
                observable.updateData(NETWORK_DISABLE);
                Log.d("Net", "Disconnected");       
            }       
    }
В принципе, наш класс готов. Чтобы начать с ним работу, нужно зарегистрироваться, как слушатель.
Наша активити должна быть
Java
1
implements Observer
Включаем:
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
@Override
    protected void onStart() {
        super.onStart();    
        mNetworkReceiver = NetworkReceiver.getInstance();
        mNetworkReceiver.setContext(this);
        mNetworkStateChangedFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(mNetworkReceiver, mNetworkStateChangedFilter);
    }
 
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        try {
            mNetworkReceiver.removeInetObserve(this);
        } catch (Exception e) {
            // TODO: handle exception
        }
        try {
            unregisterReceiver(mNetworkReceiver);
        } catch (Exception e) {
 
        }
    }
и сразу переопределим метод update:
Java
1
2
3
4
5
6
7
8
9
public void update(Observable observable, Object data) {
        if (!observable.getClass().equals(NetworkReceiver.InnerObservable.class))
            return;
        if (data.equals(NETWORK_ENABLE)) {          
            Log.d("network", "Enabled");
        } else if (data.equals(NETWORK_DISABLE)) {
            Log.d("network", "Disabled");
        }
    }
Чуть не забыл, в манифест выставим нужные премишены

XML
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
02.11.2012, 13:13  [ТС] #3
Ого, сколько всего. Спасибо, буду пробовать. На проверку включен ли GPS понадобилось всего около 15 строк
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.11.2012, 13:19 #4
это код отлавливает момент включения и выключения интернета.
а чтобы проверить текущее состояние:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            Log.v("status", "ONLINE");
            return true;
        }
        else {
            Log.v("status", "OFFLINE");
            return false;
        }
    }
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
02.11.2012, 13:23  [ТС] #5
Цитата Сообщение от V0v1k Посмотреть сообщение
это код отлавливает момент включения и выключения интернета.
а чтобы проверить текущее состояние:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            Log.v("status", "ONLINE");
            return true;
        }
        else {
            Log.v("status", "OFFLINE");
            return false;
        }
    }
Ну а как при запуске проверить включен или нет? Чтоб при запуске выпал AlertDialog с кнопками Да и Нет. То есть перейти к Настройкам или не включать
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.11.2012, 13:33 #6
тем методом который вы процитировали.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
02.11.2012, 22:56  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
это код отлавливает момент включения и выключения интернета.
а чтобы проверить текущее состояние:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            Log.v("status", "ONLINE");
            return true;
        }
        else {
            Log.v("status", "OFFLINE");
            return false;
        }
    }
Что-то я не понял смысл этого кода. Ничего не происходит
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.11.2012, 23:04 #8
Цитата Сообщение от Digetix Посмотреть сообщение
Что-то я не понял смысл этого кода.
он проверяет связь с интернетом.

Цитата Сообщение от Digetix Посмотреть сообщение
Ничего не происходит
а что должно происходить?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
03.11.2012, 00:58  [ТС] #9
Цитата Сообщение от V0v1k Посмотреть сообщение
а что должно происходить?
Если Передача данных не включена, то предложить пользователю перейти в Настройки и включить Передача данных
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.11.2012, 01:01 #10
ну так предложите.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
03.11.2012, 11:59 #11
V0v1k, однако стальные у тебя нервы, я сначала пытался отвечать, но потом понял что будут бесконечно спрашивать "почему мой хэлоуворлд не запускается".

YuraAAA, дорогой мой коллега:
0 регистрация ресивера в манифесте для подобных целей очень вредна! он будет срабатывать даже когда ваша программа не запущена. приложение будет висеть в памяти.
1 для цели, которую преследует автор, более чем достаточно просто динамически регистрировать ресивер в onStart и анрегистерить в onStop.
2 вместо неуместного паттерна Observable я бы вам порекомендовал выучить нормально синглтон. В Android надо учитывать мультипоточность.
3 Обычно программисты пытаются свести к минимуму держание в качестве переменной контекста. Это может приводить к мемориликам.
4 Когда нужен контекст Апликейшна - его обычно и передают. А когда нужен контекст для UI-related операций - передюат this.

просто знать API не достаточно.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
03.11.2012, 13:55  [ТС] #12
Цитата Сообщение от YAUHEN Посмотреть сообщение
V0v1k, однако стальные у тебя нервы, я сначала пытался отвечать, но потом понял что будут бесконечно спрашивать "почему мой хэлоуворлд не запускается".
Ну так V0v1k реально помогает, а не критикует, что там и как кто спросил. Если вас напрягает "почему мой хэлоуворлд не запускается", то не отвечайте на такие темы.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.11.2012, 16:35 #13
Цитата Сообщение от YAUHEN Посмотреть сообщение
однако стальные у тебя нервы
да уже начали сдавать, так как в последнее время много глупых вопросов)
G_O_R
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 22
02.02.2013, 16:20 #14
Цитата Сообщение от V0v1k Посмотреть сообщение
это код отлавливает момент включения и выключения интернета.
а чтобы проверить текущее состояние:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            Log.v("status", "ONLINE");
            return true;
        }
        else {
            Log.v("status", "OFFLINE");
            return false;
        }
    }
а как сделать чтоб проверял соединение каждые 5 минут????

Добавлено через 3 минуты
Цитата Сообщение от Digetix Посмотреть сообщение
Ого, сколько всего. Спасибо, буду пробовать. На проверку включен ли GPS понадобилось всего около 15 строк
не подскажите где прочитать или найти код для нахождения координат по gps и узнать инфу про телефон(номер телефона, номер биоса, врем я и дату). одним словом системную информацию. Спасибо заранее.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.02.2013, 22:32 #15
Цитата Сообщение от G_O_R Посмотреть сообщение
а как сделать чтоб проверял соединение каждые 5 минут????
не нужно проверять каждые 5 мин, достаточно отлавливать изменения конекшена - http://stackoverflow.com/questions/1...ndroid-example


Цитата Сообщение от G_O_R Посмотреть сообщение
нахождения координат по gps
вот целый туториал - http://www.vogella.com/articles/Andr...I/article.html


Цитата Сообщение от G_O_R Посмотреть сообщение
узнать инфу про телефон
http://developer.android.com/referen.../os/Build.html


Цитата Сообщение от G_O_R Посмотреть сообщение
номер телефона
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();


Цитата Сообщение от G_O_R Посмотреть сообщение
врем я и дату
Calendar.getInstance().getTime()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2013, 22:32
Привет! Вот еще темы с ответами:

Как проверить, есть ли подключение к БД при запуске приложения? - Delphi БД
Проверять при крите главной формы, разумеется нельзя, т.к. datamodule запускается первым, иначе будет Access Volation... Т.е. получается...

Файл при запуске по двойному щелчку мыши не работает как при запуске в терминале - Linux
Есть текстовый файл Goodgame.sh с таким кодом: xclip -o &gt; clipboard.txt file=&quot;/home/user/clipboard.txt&quot; while read line do #...

Проверить, включен ли RadioButton - Delphi
Здравствуйте уважаемые эксперты, в общем есть 2 кнопки RadioButton. Нужно чтобы одна из них была нажата, как это проверить?

не включается интернет при запуске винды - Windows 7
Дело вот в чем, на win7 при запуске системы не запускается интренет. И включить его можно только после того заходишь в &quot;изменение...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.02.2013, 22:32
Ответ Создать тему
Опции темы

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