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

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

Войти
Регистрация
Восстановить пароль
 
 
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
#1

Проверить подключение к интернету, если выдернут шнур - Программирование Android

28.08.2014, 21:05. Просмотров 862. Ответов 15
Метки нет (Все метки)

здравствуйте, как можно узнать, что есть подключение к интернету, если выдернут шнур из роутера? И еще: как исправить ошибку если при загрузке данных выключился интернет? Использую AsyncTask и HttpClient.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2014, 21:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить подключение к интернету, если выдернут шнур (Программирование Android):

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

Проверить, подключен ли интернет, если выдернут шнур из роутера - Сети
то есть в этом случае нужно отправить http запрос на сервер провайдера или как в этом случае программно понять есть ли интернет?? мне...

Как проверить подключение к интернету? - PascalABC.NET
Как проверить подключение к интернету? Чтобы , к примеру, вывести его в значение TRUE/FALSE???

Как проверить есть ли подключение к интернету? - Visual Basic .NET
???

Необходимо ли подключение к интернету, если два компьютера соединены локально? - Сети
Если клиент и сервер TCP находятся в одной локальной сети или даже на одном компьютере то подключение к интернету все равно необходимо для...

Подключение к интернету через блютус к интернету смартфона 5530 - Symbian
Здравствуйте! Ребята подскажите можно ли настроить доступ к интернету через блютус смартфона 5530 и если можно то как? Заранее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99
30.08.2014, 13:32 #2
Похоже никто не может подсказать готового решения, я уже создавал похожую тему Проверка интернет соединения

Добавлено через 1 минуту
Я думаю необходима проверка интернет соединения сразу несколькими способами...
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
30.08.2014, 21:09 #3
Ну проверьте стандартным способом, потом попробуйте послать запрос на сервер, если ответ не такой как ожидался - интернета нет. Для проверки ошибок при скачивании используйте хэш сумму файла, если не совпала - ошибка, загружайте заново.

Добавлено через 1 минуту
Если сервер не ваш, и хэши не выдает - придумайте что то еще)
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,248
31.08.2014, 01:10 #4
а можете примерный код написать как послать на сервер запрос??

Добавлено через 50 секунд
и как проверять контрольную сумму?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
31.08.2014, 01:44 #5
Цитата Сообщение от yura91 Посмотреть сообщение
а можете примерный код написать как послать на сервер запрос??
В гугле много примеров.
Цитата Сообщение от yura91 Посмотреть сообщение
и как проверять контрольную сумму?
Генерируете на сервере, посылаете файл и строку с хэшем, получаете файл, генерируете сумму на телефоне, сверяете строки, если совпало - файл скачался полностью, если нет - недокачался. Примеры когда тоже есть в гугле.
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99
01.09.2014, 09:32 #6
В следующем примере при включенном wi-fi и отсутствии инета, всё-равно вылазит стандартное окно, в остальных случаях работает...

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
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
 
public class NewsActivity extends Activity {
    
    WebView mWebViewNews;
    WebView mWebViewStock;
    WebView mWebViewPrice;
    
    String News = "<html><body>Нет интернет соединения. \n </body></html>";
    String Stock = "<html><body>Проверьте ваше интернет подключение </body></html>";
    String Price = "<html><body>Проверьте ваше интернет подключение </body></html>";
    
    boolean status;
    
    @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);
        
        if ( isOnline()) { 
        // переходим по URL если доступен
            mWebViewNews.loadUrl("http://tpk-tek.ru/pda/index/news_mobile/0-21/");
            mWebViewStock.loadUrl("http://tpk-tek.ru/pda/index/stock_mobile/0-22");
            mWebViewPrice.loadUrl("http://tpk-tek.ru/pda/index/skachat_prajs/0-7"); 
        }
       else {
           
           
           status = isOnline();
 
        // решаем проблеммы с кодировкой
           WebSettings settingsNews = mWebViewNews.getSettings();
           settingsNews.setDefaultTextEncodingName("utf-8");
       // выводим текст если URL не доступен
       mWebViewNews.loadDataWithBaseURL(null, News, "text/html", "utf-8", null);
       
       WebSettings settingsStock = mWebViewStock.getSettings();
       settingsStock.setDefaultTextEncodingName("utf-8");
           mWebViewStock.loadDataWithBaseURL(null, Stock, "text/html", "utf-8", null);
           
           WebSettings settingsPrice = mWebViewPrice.getSettings();
           settingsPrice.setDefaultTextEncodingName("utf-8");
           mWebViewPrice.loadDataWithBaseURL(null, Price, "text/html", "utf-8", null);
           }
        
        
     
}
        
      boolean isOnline() {
            
            ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo nInfo = cm.getActiveNetworkInfo();
            if (nInfo != null && nInfo.isConnected()) {
                status = true;
                return true;
            }
            else {
                status = false;
                return false;
            }
            
            
        }
    
        
      
}
Последний раз редактировалось mcGurov; 10.06.2014 в 14:08.
mcGurov на форуме Сообщить модератору о нарушении   Быстрый ответ на это сообщение
Ответ Создать новую тему
Быстрый переход
 
 
 Быстрый ответ [Включить плавающее окно]
Добавлено через 1 минуту
А так отправляем запрос по url...
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);
    
 
}
}
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,248
01.09.2014, 20:06 #7
можете дать ссылку на хороший пример??
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
02.09.2014, 01:21 #8
два года использую такую функцию
Java
1
2
3
4
5
6
7
8
9
    public static boolean isConnected(Context context) {
        ConnectivityManager manager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (manager.getActiveNetworkInfo() != null) {
            return (manager.getActiveNetworkInfo().isAvailable() && manager
                    .getActiveNetworkInfo().isConnected());
        }
        return false;
    }
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
02.09.2014, 09:26 #9
Цитата Сообщение от Netscape Посмотреть сообщение
два года использую такую функцию
Вернет true, если подключится через 3g, и иметь отрицательный баланс. Но на все запросы будет возвращать html страницу с информацией о счете. По крайней мере на мегафоне так. И думаю с публичным вайфаем(где нужна авторизация) такая же проблема будет. Если есть свой сервер лучше после этой проверки попробовать до него достучатся, либо до каких то сервисов которые время возвращают по запросу - там очень быстро приходит ответ и еще не разу не видел чтобы они падали.
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 12:55  [ТС] #10
Spelcrawler, вот об этом я и говорил. Спасибо за развернутое сообщение. Никто не знает как решить эту проблему?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
04.09.2014, 12:58 #11
Я ведь описал выше способы. Если остались вопросы, поконкретнее задайте)
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,741
Завершенные тесты: 1
04.09.2014, 12:59 #12
я бы пинговал гугловский dns, адреса:
8.8.8.8
8.8.4.4
у них доступность очень высокая
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 13:09  [ТС] #13
Spelcrawler, можно поконкретнее с реализацией запроса к серверу? Имеется ввиду java-код запроса к серверу с таймером или что-то вроде этого. Запросы я делать умею, меня интересует куда нужно засунуть таймер.

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
class MyTask extends AsyncTask<Void, Void, String> {
 
HttpPost post_request;
String response_string;
        HttpClient httpclient;
        List<NameValuePair> nameValuePairs;
        HttpEntity responseEntity;
        HttpResponse response;
 
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      
    }
 
    @Override
    protected Void doInBackground(String... params) {
      try {
        post_request = new HttpPost("http://server.ru/internet.php");
                    nameValuePairs = new ArrayList<NameValuePair>(1);
                    nameValuePairs.add(new BasicNameValuePair("proverka", ""));
                    
 
                    post_request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
                    response = httpclient.execute(post_request);
                    responseEntity = response.getEntity();
                    response_string = EntityUtils.toString(responseEntity, "UTF-8");
 
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      return response_string;
    }
 
    @Override
    protected void onPostExecute(String result) {
      super.onPostExecute(result);
      
    }
  }
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
04.09.2014, 13:20 #14
А зачем таймер?
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 13:23  [ТС] #15
Я думал ждать определенное время и если не ответа сообщает об ошибке, а если нет, то загружать данные. А у вас есть другая идея?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2014, 13:23
Привет! Вот еще темы с ответами:

как подсоединить интернет на 2 ноутбука если 1 шнур??? - Сети
у меня один шнур от интернета (он просто с подъезда идет) как сделать так что бы можно было сидеть с 2 ноутбуков но не через wi fi

подключение к интернету - Сети
Доброго все времени суток. подскажите пожалуйста при подключение к интернету у меня разница передаваемых пакетов и принимаемых небольшая...

Подключение к интернету - Сети
1.Есть смартфон 2. Есть ноутбук 3. Есть локальная сеть у ноута. Как подключить смартфон к локальной сети через ноут, что бы можно...

Подключение VB к интернету - Эмуляторы
Здравствуйте уважаемые форумчане! В качестве виртуальной ОС установил в VirtualBox Ubuntu 14.04LTS. В настройках сети виртуальной...


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

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

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