Ответ 1
Ответ дьявольски прост: удалите, затем заново создайте свой AVD (виртуальное устройство/эмулятор) в Eclipse. Это сработало для меня - в первый раз.
Этот код не работает:
URL url = new URL( xmlPath );
InputSource input = new InputSource( url.openStream() );
все время, приводящее к исключению UnknownHostException, даже когда хост существует, успешно удался с использованием того же кода, если с другого узла разработки (машины), а также из браузера.
Я, вероятно, не в порядке, задав этот вопрос снова, повторю Android java.net.UnknownHostException: Host не решен (вопрос стратегии) . Программное обеспечение форума не позволило бы мне прокомментировать неудовлетворительный ответ на этот вопрос (чтобы уделить больше внимания решению, которое я в конечном итоге нашел). Возможно, я недостаточно популярен, чтобы получить эту привилегию. Тем временем я по существу переписываю вопрос и другой ответ.
В принципе, я согласен с тем, что, возможно, Android-устройство в определенных обстоятельствах испытывает трудности с DNS, но я попытался, например, пример anddev.org о том, как использовать анализатор SAX, и он работал на одной машине я есть, а не на другом.
Изменить: Как уже отмечалось, я знаю рабочий ответ и опубликую его.
Я а) задаю вопрос (который уже был задан и безуспешно ответил) и b) отвечая на него в интересах тех, для кого мой ответ будет полезен.
Ответ дьявольски прост: удалите, затем заново создайте свой AVD (виртуальное устройство/эмулятор) в Eclipse. Это сработало для меня - в первый раз.
Я следил за приведенными выше шагами, но по-прежнему стараюсь не повезло, наконец, я просто понимаю, что мое приложение не позволяет выйти за пределы интернета в эмуляторе. Поэтому просто добавьте права пользователей в файл манифеста. Готово! Благодаря jozsi см. http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device
В моем случае я загружал XML файл с URL-адреса на моем телефоне, но в этой теме описывал проблему.
для его исправления я должен был не только иметь регулярное разрешение на доступ к интернету
<uses-permission android:name="android.permission.INTERNET" />
Но мне также нужно
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
В качестве предпосылки для того, чтобы узнать, может ли ваше устройство понадобиться одно и то же, попробуйте перейти к URL-адресу в браузере телефона, чтобы узнать, есть ли подсказки о необходимости использования SD-карты или что-то в этом роде.
Надеюсь, что это поможет другим.
Я тоже видел это на телефоне (при отладке USB). Решение состояло в том, чтобы отключить WiFi и снова включить его.
Он работает для меня, добавляя разрешение пользователя для Интернета в AndroidMenifest.xml
файле
<uses-permission android:name="android.permission.INTERNET"/>
Вам нужно включить интернет в эмулятор.
Открыть эмулятор
Нажмите кнопку меню и откройте "настройки"
Откройте "wireles and network"
Откройте "Мобильные сети"
Проверьте "Разрешение данных"
Теперь снова проверьте свое приложение.
В моем случае проблема была в другом месте. Мне пришлось:
добавить <uses-permission android:name="android.permission.INTERNET" />
настройте прокси-сервер на моем эмуляторе: Emulator > settings > wireless and network > Mobile Networks > Access Point Name > "the access point you have ;)"
. Здесь вы можете установить все URL-адрес прокси-сервера и логин/пароль, которые вы хотите.
И
Я нашел решение здесь:
HTTP не работает в эмуляторе Android
"Это исключение существует по какой-то причине. Активность сети может занять время, выполнение сети в основном потоке, который является тем же самым потоком ответственный за обновление пользовательского интерфейса, заморозит поток до тех пор, пока сетевое взаимодействие (это то, что происходит в каждом потоке, но когда он выполнялся по выделенному потоку, это нормально). В Android, если UI-поток не активен в течение 5 секунд, он покажет, что приложение не отзывчивый, вы хотите закрыть его? Диалог."
Я не мог избавиться от эмулятора "UnknownHostExceptions" - и браузер эмулятора тоже не получил соединение. Пробовал все предложения, которые я мог найти при переполнении стека и везде.
Наконец, я удалил свой AVD, выключил Eclipse, а затем создал AVD через командную строку. Затем запустили его через командную строку с -dns-server 8.8.8.8. (на моем Mac:./emulator -avd Google-8 -dns-server 8.8.8.8) Наконец-то это сработало!
Надеюсь, это поможет кому-то еще.
Спасибо тебе так много. Я рад, что ты упорствовал. Я потратил большую часть часа на чтение всех возможных исправлений этой ошибки. Просто для кого-то другого, спотыкающегося по этой теме, я кратко расскажу здесь: -Check Интернет использует разрешение в манифесте -Заключение исключения (бессмысленно) -Изменение настроек брандмауэра в ОС -Закрыть соединение (только окна) И загрузка другого материала
Мое исправление заняло немного больше твоего, но не много. Прочитав сообщение, я закрыл и уничтожил все эмуляторы. Затем я заметил, что, когда я перебрался через кнопку запуска (зеленый круг с белой стрелкой), он сказал, что программа уже запущена, хотя AVD (эмуляторы) не существовали! Во всяком случае, перезапущенное затмение, создал AVD и запустил его, а Боб был моим отцом-братом. Ничего общего с моим кодом или настройкой.
Я нашел это позже. Он вполне может добиться того же, но я не могу ручаться за него, если проблема не повторится. http://www.jiahaoliuliu.com/2011/02/stopping-android-applications-already.html Другим трюком, который/может/достичь того же результата, является галочка "стереть пользовательские данные" в закладке "Запуск конфигурации", вкладку "Цель".
Моя проблема заключалась в совместном использовании Интернета с компьютера через WIFI, после того как соединение Ethernet было потеряно и снова подключено. Я не мог связаться с телефоном. Это было исправлено путем перезапуска интернет-обмена на компьютере.
Надеюсь, что это поможет кому-то.
В моем случае я использовал URL-адрес на основе имени хоста с HttpURLConnection. Однако, используя URL-адрес, основанный на IP, проблема была решена. Я также удалил/воссоздал AVD, но это не помогло.
Я просто перезапускаю AVD и добавляю User Permission, после чего он работает.
<uses-permission android:name="android.permission.INTERNET" />
проблема решена
запустить cd C:\Program Files\Android\android-sdk\tools
запустить андроид-лист avd в cmd возвращает список ur availabe avd.... в моем случае его Myabc_avd
запустить эмулятор @Myabc_avd -dns-server 8.8.8.8 в cmd... avd покажет avd перейдите в браузер avd и введите www.google.com, чтобы отобразить страницу google. u теперь может обращаться к браузеру с использованием имени хоста, например myfrstapp.com
если все идет хорошо, тогда вы можете запустить проект ur с использованием eclipse, но убедитесь, что он работает в avd, который запускается из cmd.
В моем случае я только что перезапустил эмулятор, и он сработал.
Это так просто. Не нужно перезапускать eclipse ИЛИ удалять и создавать эмулятор, вам просто нужно выполнить следующие шаги:
Что это...
Я столкнулся с этой проблемой, когда я запустил эмулятор, когда я подключился к VPN. Выход из VPN не повлиял, пока я не покинул эмулятор и не перезапустил его. Легко проверить, правильно ли ваш эмулятор правильно разрешает имена - просто перейдите в браузер эмулятора и введите имя хоста веб-сайта.
Пожалуйста, попробуйте перезагрузить эмулятор.