Intereting Posts
Android App Widget – API-интерфейс AsyncTask в обновлении Вычислить истинный заголовок правильно в android Увеличивает ли срок подписки на подписку на участие в приложениях Android с каждым ежемесячным обновлением? Как сгенерировать отчет о результатах теста с использованием роботизма? Как загрузить файл изображения в «Дооснащение 2» Перетаскиваемый ящик с ручкой (вместо панели действий) поверх других приложений Что произойдет, если return false в OnCreate ContentProvider? Как узнать, когда в Froyo происходит изменение конфигурации? Чтение com.google.android.apps.photos.contentprovider.MediaContentProvider требует, чтобы поставщик был экспортирован, или grantUriPermission () Как удалить простыню вокруг кнопок в Android? Поведение браузера по недействительным / самозаверяющим сертификатам Как удалить строку заголовка из андроидной активности? Внедрение сканера в стиле Spring в Android Как я должен кодировать, чтобы противостоять «одноразовому пиратству»? Изменить размер текста WebView?

ErrnoException: isConnected failed: EHOSTUNREACH (без маршрута к хосту) при изменении сети Wi-Fi с использованием ICS

Когда я использую свое приложение в ics, после того, как я изменил свою сеть Wi-Fi от сети А до сети Б, все запросы на образы начинают возвращаться с исключением.

Не удалось с исключением

> org.apache.http.conn.HttpHostConnectException: Connection to > https://m1.testapp.com refused at > org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183) > at > org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) > at > org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) > at > org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) > at > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) > at > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) > at > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) > at > com.testApp.android.ws.PooledRequestProcessor$Runner.run(PooledRequestProcessor.java:298) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) > at java.lang.Thread.run(Thread.java:856) Caused by: > java.net.ConnectException: failed to connect to /109.233.153.38 (port > 443) after 20000ms: isConnected failed: EHOSTUNREACH (No route to > host) at > org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181) > ... 10 more Caused by: java.net.SocketException: failed to connect > to /109.233.153.38 (port 443) after 20000ms: isConnected failed: > EHOSTUNREACH (No route to host) at > libcore.io.IoBridge.isConnected(IoBridge.java:220) at > libcore.io.IoBridge.connectErrno(IoBridge.java:152) at > libcore.io.IoBridge.connect(IoBridge.java:112) at > java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) at > java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) at > java.net.Socket.connect(Socket.java:842) at > org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) > at > org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) > ... 10 more Caused by: libcore.io.ErrnoException: isConnected > failed: EHOSTUNREACH (No route to host) at > libcore.io.IoBridge.isConnected(IoBridge.java:201) 

Самое странное, что даже удалить приложение и переустановить его не исправить, просто выключив и включив телефон.

Я видел аналогичную проблему здесь http://groups.google.com/group/newsrob/browse_thread/thread/ea2f26d9d1753b79/5800e268eeab399c#5800e268eeab399c . Проблема не возникает на телефонах с 4.0.3, только на версии 4.0.1, и обновление пока не доступно в Европе.

Может быть, это займет какое-то время, когда переключение произойдет по какой-то причине? Вы можете проверить, есть ли активное сетевое соединение перед выполнением запроса:

 ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected() && networkInfo.isAvailable()) { // DO WHAT YOU NEED TO DO ON THE NETWORK } else { // PROMPT USER THAT NETWORK IS DISCONNECTED Toast.makeText(this, "There is no active network connection!", 5000).show(); } 

При переключении и установке с помощью нового сетевого устройства может потребоваться некоторое время. Код ниже может помочь вам.

 ConnectivityManager connMngr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); try { return connMngr.getActiveNetworkInfo().isConnectedOrConnecting(); } catch (NullPointerException npe) { return false; } 

Похоже, у вас проблемы с протоколом TCP. Это может быть в случае слабых сигналов Wi-Fi или 3G. Используйте try / catch для этого.

Failed: EHOSTUNREACH (нет маршрута к хосту)

Таким образом, маршрутизация настроена неправильно.

Я обнаружил, что для некоторых устройств вам необходимо установить поле WifiConfiguration ipAssignment в WifiConfiguration.IpAssignment.DHCP вручную, чтобы запрос DHCP выполнялся после изменения программного обеспечения wifi. Это можно сделать только через отражение, см. Этот ответ, как его кодировать . Поймать все исключения, потому что на других устройствах поле даже не существует.