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

Возможный дубликат:
Android - определить, доступно ли подключение к Интернету

это код для проверки доступности интернета на устройстве Android:

public boolean isInternetAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm.getActiveNetworkInfo() != null)
        return cm.getActiveNetworkInfo().isConnected();
    else
        return false;
}

Так что этот код работает правильно, если нет доступа к Wi-Fi или сети.

Но если устройство подключено к сети Wi-Fi, но Интернет недоступен, что я должен сделать, чтобы проверить, есть ли Интернет или нет?

Любое предложение будет оценено.

3 ответа

Решение

Я делаю это так:

Я пытаюсь связаться с google.com и ожидать ответа:

public static void isGoogleAvailable(final Handler handler)
{
    new Thread()
    {
        private boolean hasGoogleResponded = false;
        @Override
        public void run()
        {
            new Thread()
            {
                @Override
                public void run()
                {
                    HttpGet requestForTest = new HttpGet("https://www.google.com/");
                    try
                    {
                        new DefaultHttpClient().execute(requestForTest);
                        hasGoogleResponded = true;
                    }
                    catch (Exception e)
                    {}
                }
            }.start();

            try
            {
                int waited = 0;
                while(!hasGoogleResponded && (waited < 60000))
                {
                    sleep(100);
                    if(!hasGoogleResponded )
                    {
                        waited += 100;
                    }
                }
            }
            catch(InterruptedException e)
            {}
            finally
            {
                if (hasGoogleResponded)
                {
                    handler.sendEmptyMessage(1);
                }
                else
                {
                    handler.sendEmptyMessage(0);
                }
            }
        }
    }.start();
}

Затем я получаю сообщения в своем обработчике:

Handler internetHandler = new Handler()
{
    @Override
    public void handleMessage(Message msg)
    {
        if (msg.what == 1) //connected
        {

        }
        else //not connected
        {

        }
    }
};

Надеюсь, это поможет.

Вы можете попробовать проверить связь с сервером, таким как Google (он должен существовать всегда), см. Эту тему

Ты можешь попробовать

 ConnectivityManager m;
            m.getAllNetworkInfo();

Сначала проверьте подключение к интернету, затем другие. Но иногда это зависит от архитектуры приложения. Если приложению нужен Wi-Fi, а у вас нет - вы не можете проверить интернет, потому что это не нужно

Другие вопросы по тегам