如何检查wifi路由器是否访问互联网在Android程序中?移动连接到wifi路由器但路由器无法访问互联网?

时间:2015-10-27 12:01:57

标签: android

我能检查手机是否连接到wifi路由器但是如何检查路由器是否访问互联网?如果手机连接到路由器然后它返回true但不检查互联网访问PLZ帮助......

public boolean isInternetAvailable() {

    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {

        NetworkInfo[] info = connectivity.getAllNetworkInfo();

        if (info != null)
        {
            for (int i = 0; i < info.length; i++)
            //  if (info[i].(info[i].getState() == NetworkInfo.State.CONNECTED)

            if(info[i]!=null && info[i].isAvailable()  &&  info[i].isConnected())
            {


                try {
                    if (InetAddress.getByName("https://www.google.co.in").isReachable(3000))
                    {
                        return true;
                    }
                    else
                    {
                        return  false;
                        // host not reachable
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

                Log.i("Network Info", info[i].toString());
                    return true;
                }
        }
        return false;
    }
    return false;
}

}

1 个答案:

答案 0 :(得分:-2)

使用此功能。它将检查互联网连接的实际状态是否正在运行。

注意此功能将ping到Google公共DNS服务器以检查连接。因此,当DNS服务器关闭时,它不保证给出正确的结果。虽然谷歌DNS服务器每次都在线,所以我们可以相信它。

public boolean isOnline() {

    Runtime runtime = Runtime.getRuntime();
    try {

        Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);

    } catch (IOException e){
        e.printStackTrace();

    } catch (InterruptedException e){
        e.printStackTrace(); 
    }

    return false;
}