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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Переход между fragment и activity http://www.cyberforum.ru/android-dev/thread1201556.html
Доброй ночи) возникла необходимость обратного перехода от активити во фрагмент, при этом ничего обратно передать не надо. То есть нужно просто вернуться от активити. Вроде, нужно через fragment menedger, но как это сделать? заранее спасибо)
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:layout_height="match_parent" android:background="@drawable/background" android:orientation="vertical" > <ScrollView android:id="@+id/scrollView1"
Android Правильная реализация клиент\сервер. Авторизация. Сессии Здравствуйте. Мы создаем клиент-серверное приложение. Структура такова: клиент отправляет обычные POST запросы на сервер, тот их обрабатывает и генерирует на странице JSON код. Потом клиент парсит эти данные по http. Так передается вся информация, вплоть до пароля(буден шифроваться). Следовательно, формируется что-то типа API. Вопрос1: не слишком ли это примитивно? как можно доработать схему?... подробнее

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

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

07.06.2014, 09:59. Просмотров 3282. Ответов 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru