Проверка интернет-соединения 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, а у вас нет - вы не можете проверить интернет, потому что это не нужно