Проверить интернет соединение в андроиде? - PullRequest
0 голосов
/ 07 июля 2011

Сегодня я обнаружил странную вещь при тестировании своего приложения на устройстве Android.В «Моем устройстве» я включил WIFI-соединение, но из-за некоторых внутренних проблем интернет-соединение недоступно, и мое приложение не было выполнено, и после перезагрузки устройства оно работает нормально.Итак, как справиться с этой ситуацией.

[В моем приложении я проверил WIFI и мобильную сеть]

Ответы [ 2 ]

1 голос
/ 07 июля 2011

У меня была странная проблема в сети в работе.Я бы подключил телефон к нашей сети через Wi-Fi, и он подключился бы к сети grand, и статус был бы «Подключен к имени сети».Но примерно через 10 минут мой телефон был подключен к Wi-Fi.Когда я проверяю статус телефона, он говорит: «аутентификация с помощью [имени сети]. Эта проблема привела к некоторой отладке, так как даже когда он говорит, что это« аутентификация », я все равно мог получить доступ к своим gmail / facebook и веб-сайтам на своем телефоне. Однакокогда я попробовал свой метод подключения, похожий на scorpio, он вернул бы не подключенный к интернету. Вот мой:

 /**
 * Method to see if device has any access to the Internet. 
 * @return boolean true if connected, otherwise false.
 */
public boolean isConnectedToInternet()
{
    try{
        ConnectivityManager cm = (ConnectivityManager) getSystemService
                                                    (Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();

        if (netInfo != null && netInfo.isConnected())
        {
            //Network is available but check if we can get access from the network.
            URL url = new URL("http://www.Google.com/");
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(2000); // Timeout 2 seconds.
            urlc.connect();

            if (urlc.getResponseCode() == 200)  //Successful response.
            {
                return true;
            } 
            else 
            {
                 Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show();
                 Log.d("NO INTERNET", "NO INTERNET");
                return false;
            }
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show();
    return false;
}

Однако, когда телефон говорит, что аутентификация этой строки здесь вернет ноль.

NetworkInfo netInfo = cm.getActiveNetworkInfo();

Как я уже говорил при аутентификации, я все еще мог получить доступ к сети на телефоне, и приложения, такие как facebook / gmail, все еще работали, но приложения, такие как мое или некоторые из моих коллег, которые использовали подобный подход выше, не сделали. Что, очевидно, я вижупочему, когда я выяснил, почему это так. Просто мне стало интересно, как приложения, такие как facebook / gmail, проверяют соединение с интернетом. Поэтому мне было интересно, должен ли я просто воспользоваться этим подходом:

URL url = new URL("http://www.Google.com/");
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(2000); // Timeout 2 seconds.
            urlc.connect();

            if (urlc.getResponseCode() == 200)  //Successful response.
            {
                return true;
            } 
            else 
            {
                 Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show();
                 Log.d("NO INTERNET", "NO INTERNET");
                return false;
            }

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

0 голосов
/ 07 июля 2011

Попробуйте это,

protected boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager)     getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
    return true;
} else {
    return false;
}
}

ИЛИ

public boolean isOnline() {
 ConnectivityManager cm = (ConnectivityManager)     getSystemService(Context.CONNECTIVITY_SERVICE);
 return cm.getActiveNetworkInfo().isConnectedOrConnecting();

}
...