java.net.UnknownHostException: невозможно разрешить хост www.google.com

Я пытаюсь определить, есть ли на самом деле подключение к Интернету и доступны ли веб-сайты. У меня есть широковещательный приемник, который запускает следующий метод при получении:

  public boolean hasInternetNow() {
           Thread checkinternet = new Thread(new Runnable() {
               @Override
               public void run() {
                 try {
                      try {
                            ConnectivityManager cm = (ConnectivityManager) myContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
                            if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
                                URL url = new URL("http://www.google.com");
                                HttpURLConnection urlc = (HttpURLConnection) url .openConnection();
                                urlc.setRequestProperty("User-Agent", "test");
                                urlc.setRequestProperty("Connection", "close"); 
                                urlc.setConnectTimeout(1000); // mTimeout is in seconds
                                urlc.connect();
                                if (urlc.getResponseCode() == 200) {
                                    setinternetDetected(true);
                                     } else {
                                    setinternetDetected(false);
                                  }
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                            setinternetDetected(false);
                        } catch (NullPointerException e){
                            e.printStackTrace();
                            setinternetDetected(false);
                        }


                 } catch (Exception e) {
                   e.getLocalizedMessage();
                   setinternetDetected(false);
                 }
               }
             });
            checkinternet.start();
            return internetDetected();
        }

При подключении к Wi-Fi и доступу к Google через интернет-приложение я получаю следующую ошибку:

10-15 07:50:46.656: W/System.err(24203): java.net.UnknownHostException: Unable to resolve host "www.google.com": No address associated with hostname
10-15 07:50:46.656: W/System.err(24203):    at java.net.InetAddress.lookupHostByName(InetAddress.java:426)
10-15 07:50:46.656: W/System.err(24203):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-15 07:50:46.656: W/System.err(24203):    at java.net.InetAddress.getAllByName(InetAddress.java:220)
10-15 07:50:46.656: W/System.err(24203):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
10-15 07:50:46.656: W/System.err(24203):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
10-15 07:50:46.656: W/System.err(24203):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-15 07:50:46.656: W/System.err(24203):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-15 07:50:46.656: W/System.err(24203):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-15 07:50:46.666: W/System.err(24203):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-15 07:50:46.666: W/System.err(24203):    at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
10-15 07:50:46.666: W/System.err(24203):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-15 07:50:46.666: W/System.err(24203):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-15 07:50:46.666: W/System.err(24203):    at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
10-15 07:50:46.666: W/System.err(24203):    at com.appiclife.ezcallcallingcardvoiptool.DeviceData$1.run(DeviceData.java:110)
10-15 07:50:46.666: W/System.err(24203):    at java.lang.Thread.run(Thread.java:856)
10-15 07:50:46.666: W/System.err(24203): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
10-15 07:50:46.666: W/System.err(24203):    at libcore.io.Posix.getaddrinfo(Native Method)
10-15 07:50:46.666: W/System.err(24203):    at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
10-15 07:50:46.666: W/System.err(24203):    at java.net.InetAddress.lookupHostByName(InetAddress.java:411)

Что мне здесь не хватает?


person Diego    schedule 15.10.2014    source источник
comment
Вы добавили разрешение на доступ в Интернет в свой манифест?   -  person Eric Levine    schedule 15.10.2014
comment
Argh :( - Я забыл об этом, но у меня все та же проблема. Спасибо, что указали на это...   -  person Diego    schedule 15.10.2014


Ответы (1)


Этот метод легко делает то же самое:

public boolean isInternetAvailable() {
        try {
            InetAddress ipAddr = InetAddress.getByName("google.com"); //You can replace it with your name

            if (ipAddr.equals("")) {
                return false;
            } else {
                return true;
            }

        } catch (Exception e) {
            return false;
        }

    }
person Seshu Vinay    schedule 15.10.2014