可能重复:
Android - detect whether there is an Internet connection available
这是检查Android设备上的互联网可用性的代码:
public boolean isInternetAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm.getActiveNetworkInfo() != null)
return cm.getActiveNetworkInfo().isConnected();
else
return false;
}
因此,如果没有可用的wifi或网络,此代码正常工作。
但是如果设备连接到wifi网络但互联网不可用,那么我应该怎么做以检查互联网是否存在?
任何建议都将不胜感激。
答案 0 :(得分:2)
我这样做:
我尝试访问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
{
}
}
};
我希望这会有所帮助。
答案 1 :(得分:1)
您可以尝试ping谷歌等服务器(应该始终存在) 见this topic
答案 2 :(得分:-1)
你可以尝试
ConnectivityManager m;
m.getAllNetworkInfo();
首先检查互联网连接,然后检查其他人。 但有时它取决于应用程序架构。 如果应用程序需要wifi而你没有 - 你无法检查互联网,因为 没有必要