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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.96
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 101
#1

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

07.06.2014, 09:59. Просмотров 4408. Ответов 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
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2014, 09:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка интернет соединения (Программирование Android):

Проверка интернет соединения - Программирование Android
Добрый день , я хотел бы проверить интернет соединение , у меня уже есть функция: public boolean checkNetworkStatus(Context context){ ...

Проверка наличия интернет соединения - Программирование Android
Если в public void onStart() { super.onStart(); } вставить код проверки на включен ли интернет и если не...

Перезагрузка интернет соединения по условию - Программирование Android
Доброго времени суток, Господа. У меня возникла проблема. Решил воспользоваться опытом программирования, чтобы ее решить. Проблема...

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

Проверка Socket на наличие соединения - Программирование Android
Помогите сделать проверку сокета перед подключением. public void onClick(View view) { if (socket.isClosed()) { socket = new...

Проверка соединения с сайтом через HttpUrlConnection - Программирование Android
я нашла кучу информации, где после подключения что-либо выдает. Как написать программный код, чтоб выдавало только удалось подсоединиться...

16
DoomTrooper
2 / 2 / 1
Регистрация: 21.01.2015
Сообщений: 51
08.06.2015, 21:14 #16
Java
1
2
3
4
5
6
7
 boolean isOnline() {
            
            ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo nInfo = cm.getActiveNetworkInfo();
       return nInfo != null && nInfo.isConnected();
           
            }
такая проверка не подходит если например включен только wifi а интернет отсутствует как тогда быть ведь специального метода вроде нет я поискал в документации не нашел может подскажете как решить эту задачу?
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
08.06.2015, 21:42 #17
Как правильно вставить AlertDialog, если нет интернета?
2
08.06.2015, 21:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 21:42
Привет! Вот еще темы с ответами:

Как сделать лог интернет соединения Android приложения - Программирование Android
Есть приложение и его исходники. Какие есть способы посмотреть что принимает и отсылает приложение. Что дописать, может, чем сами...

Проверка internet connection. Проверка доступности сети - Программирование Android
Добрый день. Для проверки Internet Connection советуют делать что-то вроде: private boolean haveNetworkConnection() { ...

Обработка обрыва соединения - Программирование Android
У меня есть TCP клиент андроид и TCP сервер на Qt в Wibndows. И вот такой вопрос, если я передаю данные с клиента на сервер и произошел...

Ошибка соединения с сервером после обновления OC с 4.4 до 5 - Программирование Android
Привет всем андроидоведам!!! Столкнулся вот с такой незадачей: при отладке приложения шлю DELETE запрос на сервер (сервер мой...


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

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

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