Android java.net.UnknownHostException: хост не разрешен - PullRequest
50 голосов
/ 18 августа 2010

Этот код не работает:

URL         url   = new URL( xmlPath );
InputSource input = new InputSource( url.openStream() );

все время, в результате чего исключение UnknownHostException, даже когда хост существует, было успешно обработано с использованием того же кода с другого хоста (компьютера) разработки, а также из браузера.

Я, вероятно, не отвечаю на этот вопрос еще раз, повторяю Android java.net.UnknownHostException: Хост не решен (вопрос стратегии) ​​. Программное обеспечение форума не позволило бы мне прокомментировать неудовлетворительный ответ на этот вопрос (чтобы привлечь больше внимания к решению, которое я в конечном итоге нашел). Возможно, я еще недостаточно популярен, чтобы получить эту привилегию. В то же время я, по сути, повторно публикую вопрос и другой ответ.

В принципе, я согласен с тем, что, возможно, устройству Android при определенных обстоятельствах трудно работать с DNS, но я попробовал, например, пример anddev.org, как использовать синтаксический анализатор SAX, и он работал на одной машине. есть и не по другому.

Edit: Как уже было отмечено, я знаю рабочий ответ и опубликую его.

Я а) задаю вопрос (который уже был задан и на него безуспешно дан ответ) и б) отвечаю на него тем, кому мой ответ будет полезен.

Ответы [ 17 ]

69 голосов
/ 18 августа 2010

Ответ чертовски прост: удалите, а затем заново создайте AVD (виртуальное устройство / эмулятор) в Eclipse. У меня это сработало - впервые.

54 голосов
/ 16 июня 2011

Я следовал вышеперечисленным шагам, но все же не испытал удачи, наконец-то я просто понял, что мое приложение не позволяло выходить за пределы Интернета в эмуляторе.Так что просто добавьте права пользователей в свой файл манифеста.Готово!Благодаря Jozsi см. http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

  1. android.permission.INTERNET
  2. android.permission.ACCESS_NETWORK_STATE
  3. android.permission.READ_PHONE_STATE
14 голосов
/ 08 июля 2012

В моем случае я загружал файл XML с URL-адреса на моем телефоне, но у меня возникла проблема, описанная в этой теме.

для исправления, мне не только нужно было иметь обычное интернет-разрешение

<uses-permission android:name="android.permission.INTERNET" /> 

Но мне также нужно было

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

В качестве предложения, чтобы увидеть, если ваше устройствоможет понадобиться то же самое, попробуйте перейти по URL-адресу в браузере вашего телефона, чтобы увидеть, если подсказки о необходимости SD-карты или что-то.

Надеюсь, что помогает другим.

13 голосов
/ 13 февраля 2011

Я видел это и на телефоне (во время отладки по USB). Решением было отключить WiFi и снова включить его.

8 голосов
/ 10 сентября 2012

Это работает для меня, добавив разрешение пользователя для Интернета в AndroidMenifest.xml файле

<uses-permission android:name="android.permission.INTERNET"/>
6 голосов
/ 06 ноября 2012

В моем случае проблема была в другом месте.Мне пришлось:

  • добавить <uses-permission android:name="android.permission.INTERNET" />

  • настроить прокси-сервер на моем эмуляторе: Emulator > settings > wireless and network > Mobile Networks > Access Point Name > "the access point you have ;)".Здесь вы можете установить все URL прокси-порта и логин / пароль, которые вы хотите.

И

  • Вызовите мою сетевую операцию вотдельная тема.Самый простой способ был реализовать AsynchTask.

Я нашел решение здесь:

HTTP не работает в эмуляторе Android

"Это исключение существует по причине. Сетевая активность может занять некоторое время, выполнение сетевых операций в основном потоке, который является тем же потоком, который отвечает за обновление пользовательского интерфейса, приведет к зависанию потока до появления сетисделано (это то, что происходит в каждом потоке, но когда он выполняется в выделенном потоке, это нормально). В Android, если UI-поток не активен в течение 5 секунд, он покажет, что приложение не отвечает, выполнитеВы хотите закрыть его? Диалог. "

6 голосов
/ 07 июня 2012

Вам необходимо включить интернет в эмуляторе.

  • Открытый эмулятор

  • Нажмите кнопку меню и откройте «Настройки»

  • Открыть "провода и сеть"

  • Открыть "Мобильные сети"

  • Проверка на «Разрешение данных»

Теперь снова протестируйте ваше приложение.

5 голосов
/ 17 декабря 2011

Я не смог избавиться от эмулятора "UnknownHostExceptions" - и браузер эмулятора тоже не смог бы подключиться.Перепробовал все предложения, которые я мог найти при переполнении стека и везде.

Наконец я удалил свой AVD, выключил Eclipse, а затем создал AVD через командную строку.Затем запустил его через командную строку с -dns-сервером 8.8.8.8.(на моем Mac: ./emulator -avd Google-8 -dns-server 8.8.8.8) Наконец-то это сработало!

Надеюсь, это поможет кому-то еще.

3 голосов
/ 11 апреля 2012

Моя проблема была при совместном использовании интернета с компьютера через WIFI, после потери соединения Ethernet и повторного подключения я не смог установить соединение по телефону. Это было исправлено путем перезапуска общего доступа в Интернет на компьютере.

Надеюсь, это кому-нибудь поможет.

3 голосов
/ 07 июня 2011

Большое спасибо, Расс. Я рад, что вы упорствовали. Я потратил большую часть часа, читая всевозможные исправления этой ошибки. Просто для всех, кто споткнется в этой теме, я кратко напомню здесь: -Проверить интернет использует разрешение в манифесте -Ловить исключение (бессмысленно) -Изменение настроек брандмауэра в вашей ОС -Поделиться подключением (только для Windows) И множество других вещей

Мое исправление заняло немного больше твоего, но не намного. Прочитав ваш пост, я закрыл и уничтожил все эмуляторы. Затем я заметил, что когда я накрыл кнопку запуска (зеленый кружок с белой стрелкой), он сказал, что программа уже запущена, хотя AVD (эмуляторов) не было! В любом случае, возобновил затмение, создал AVD и запустил его, а Боб был братом моего отца. Ничего общего с моим кодом или настройкой.

Я нашел это потом. Он вполне может достичь того же, но я не могу ручаться за это, если проблема не повторяется. http://www.jiahaoliuliu.com/2011/02/stopping-android-applications-already.html Еще одна хитрость, которая / может / достичь того же результата, - пометка «стереть пользовательские данные» на вкладке «Конфигурации запуска» на вкладке «Цель».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...