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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Прикрутить RadioGroup к ListView(SimpleCursorAdapter) http://www.cyberforum.ru/android-dev/thread686083.html
Не могу понять как реализовать одиночный выбор из списка: Сейчас выводит список компаний, где я могу сделать множественный выбор, а мне нужно только одиночный. Стандартный адаптер мне не подходит...
Программирование Android Как можно ускорить рендер больших текстур? Задался вопросом: Имеются две текстуры 1024х1024. Они подаются на вход фрагментному шейдеру, шейдер с ними что то делает (в моем случае эффект bump mapping) и выдает одну текстуру. При этом... http://www.cyberforum.ru/android-dev/thread685956.html
Как сделать так, чтобы ссылка (к примеру http://google.com) открывалась в стандартном браузере? Программирование Android
Как сделать так, чтобы ссылка (к примеру http://google.com) открывалась в стандартном браузере. Но нужен обязательно html-код, который, к примеру, можно было бы вставить на сайт (по поринципу:...
Не работает запрос из нескольких таблиц Программирование Android
Доброго времени суток. Такая проблема: есть БД из 3 таблиц, если делаю запрос из одной таблицы, все отлично работает, стоит сделать запрос из 2 или 3 таблиц - приложение сообщает об ошибке. Листинг...
Программирование Android Не получается отрендрить треугольник OpenGL 2.0 http://www.cyberforum.ru/android-dev/thread685645.html
Здравствуйте! Пытаюсь написать свой 2D-движок (просто спортивный интерес, не нужно мне говорить, что это почти нереально и советовать AndEngine, я просто хочу разобраться как это все работает и...
Программирование Android Недействительные показы AdMob Всем привет. Я встроил баннер AdMob в приложение и меня не устраивало, что объявления не меняются с момента создания AdView и отправки запроса. Я сделал, чтобы каждую минуту запрос отправлялся... подробнее

Показать сообщение отдельно
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
02.11.2012, 11:58
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" />
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru