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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Переход между fragment и activity http://www.cyberforum.ru/android-dev/thread1201556.html
Доброй ночи) возникла необходимость обратного перехода от активити во фрагмент, при этом ничего обратно передать не надо. То есть нужно просто вернуться от активити. Вроде, нужно через fragment...
Программирование Android Одновременные запросы с андроидов на сервер Есть несколько планшетов с андроидом и сервер на винде. С сервера передаются вопросы с вариантами ответов, а с планшетов на сервер передаётся номер ответа. При одновременном нажатии кнопок на... http://www.cyberforum.ru/android-dev/thread1201413.html
Символ "Амперсенд" и XML Программирование Android
Храню данные в XML формате и в некоторых строках есть "&". Естественно XML ругается, парсер вылетает. Как правильно хранить этот символ в XML файле ?
Программирование Android Android и Web Service
Написал веб сервис который формирует массив из трех значений, нужно написать андроид приложение, чтоб выводил их . Как этого добиться, раньше не работал с андроид PS - среду разроботки eclipse я...
Программирование Android EditText уходит за границы окна http://www.cyberforum.ru/android-dev/thread1201145.html
Имею такой XML: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" ...
Программирование Android Правильная реализация клиент\сервер. Авторизация. Сессии Здравствуйте. Мы создаем клиент-серверное приложение. Структура такова: клиент отправляет обычные POST запросы на сервер, тот их обрабатывает и генерирует на странице JSON код. Потом клиент парсит... подробнее

Показать сообщение отдельно
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 101

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

07.06.2014, 09:59. Просмотров 3792. Ответов 16
Метки (Все метки)

Как же всё-таки прописать грамотную проверку интернет соединения?

Необходимо при включенном wi-fi и отсутствии интернета в WebView выводить необходимые сообщения.

Код такой: (на основе http://forum.startandroid.ru/viewtopic.php?f=41&t=3022)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
 
public class NewsActivity extends Activity {
    
    WebView mWebViewNews;
    WebView mWebViewStock;
    WebView mWebViewPrice;
    
    final static String TAG ="mylog";
    Thread t2, t3;
    int existInternet =0;
    
    String News = "<html><body>Нет интернет соединения. \n </body></html>";
    String Stock = "<html><body>Проверьте ваше интернет подключение </body></html>";
    String Price = "<html><body>Проверьте ваше интернет подключение </body></html>";
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
         
        mWebViewNews = (WebView) findViewById (R.id.webViewNews);
        mWebViewStock = (WebView) findViewById (R.id.webViewStock);
        mWebViewPrice = (WebView) findViewById (R.id.webViewPrice);
            
    Log.d(TAG, "---- start---------");             
    
    t2 = new Thread(new Runnable() {
                    public void run() {    
                                            checkConnectivity("http://tpk-tek.ru/pda/index/news_mobile/0-21/");                         
                    }
            });
   
    t3 = new Thread(new Runnable() {
                    public void run() {                                                  
                             try { 
                                     Thread.sleep(1000); // это 1 секунда,
                                     // нужно настроить для вашего соединения, сколько готовы ждать ответа
                                    if (t2.isAlive())  {
                                            //existInternet = 0; // интернета нет
                                            t2.interrupt();
                                            t2.stop();
                                    }                              
                                   
                                    
                                    Log.d(TAG, "---- internet: " + existInternet);
                            } catch (InterruptedException e) {                                     
                                    e.printStackTrace();                                   
                            }                                      
                    }
            });
   
            t2.start();            
            t3.start();
           
            try {
                    t3.join(); // ожидание завершения потока t3
            } catch (InterruptedException e) {
                    e.printStackTrace();
            }
            Log.d(TAG, "----Main internet: " + existInternet);
}
     
public void checkConnectivity(String url)  {
    try{  
            HttpURLConnection.setFollowRedirects(false);           
        HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();          
       // conn.setRequestMethod("HEAD");
        conn.setRequestMethod("GET");
            if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {  
                            existInternet = 1; // интернет есть                        
            }
            
            
            
    }catch(Exception e) {
            Log.d(TAG, "error: " + e); // на ошибку можно не обращать внимание              
    }   
    
 
// отображение данных если URL доступен
if (existInternet == 1) mWebViewNews.loadUrl("http://tpk-tek.ru/pda/index/news_mobile/0-21/");
if (existInternet == 1) mWebViewStock.loadUrl("http://tpk-tek.ru/pda/index/stock_mobile/0-22");
if (existInternet == 1) mWebViewPrice.loadUrl("http://tpk-tek.ru/pda/index/skachat_prajs/0-7");
    
 
// решаем проблеммы с кодировкой
WebSettings settingsNews = mWebViewNews.getSettings();
settingsNews.setDefaultTextEncodingName("utf-8");
 
// отображение данных если URL недоступен
if (existInternet == 0) mWebViewNews.loadDataWithBaseURL(null, News, "text/html", "utf-8", null);
 
WebSettings settingsStock = mWebViewStock.getSettings();
settingsStock.setDefaultTextEncodingName("utf-8");
if (existInternet == 0) mWebViewStock.loadDataWithBaseURL(null, Stock, "text/html", "utf-8", null);
 
WebSettings settingsPrice = mWebViewPrice.getSettings();
settingsPrice.setDefaultTextEncodingName("utf-8");
if (existInternet == 0) mWebViewPrice.loadDataWithBaseURL(null, Price, "text/html", "utf-8", null);
    
 
}
}
Но тут извечная проблема, ели wi-fi включен, а интернета нет - то приложение вылетает!

Приложение работает корректно либо при включенном wi-fi и рабочем интернете, либо при выключенном wi-fi.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru