Android互联网连接检查

时间:2012-08-20 09:35:33

标签: android android-intent android-wifi

  

可能重复:
  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网络但互联网不可用,那么我应该怎么做以检查互联网是否存在?

任何建议都将不胜感激。

3 个答案:

答案 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而你没有 - 你无法检查互联网,因为 没有必要