RequestRouteToHost android

Приветствую всех! Мне становится очень сыт по горло классом Android ConnectivityManager. Я пробовал в течение 5 часов, чтобы заставить requestRouteToHost работать. Я запускаю свой код на эмуляторе, но requestRouteToHost всегда терпит неудачу. Я знаю, что у меня есть связь, потому что я вызвал getActiveNetworkInfo(), и он был подключен. Я добавил разрешения ACCESS_NETWORK_STATE и CHANGE_NETWORK_STATE безрезультатно. Любые советы будут очень признательны.

ИЗМЕНИТЬ -------- Метод InetAddress.isReachable также не работает. Я использовал имя хоста java.sun.com, как указано в документах. Я думаю, что это проблема с эмулятором. Сэм

Ответ 1

Похоже, что requestRouteToHost() не используется для WiFi. У частного класса WifiStateTracker нет реализации requestRouteToHost(). Вместо этого реализация по умолчанию из базового класса NetworkStateTracker всегда возвращает false.

Ответ 2

Я бы рекомендовал тестировать requestRouteToHost() с помощью реального хоста. Не только я не убежден, что localhost как имя обязательно распознается на Android, это будет сам устройство/эмулятор, который выйдет через Wi-Fi или 3G, поэтому я ожидал бы requestRouteToHost() сбой.

У вас также может возникнуть проблема с тем, откуда вы получаете lookupHost(). Например, я не уверен, поддерживает ли эту реализацию localhost.

Ответ 3

Используемая вами команда requestRouteToHost (lookupHost()) очень рискованна

Смотрите код:

conn_man.requestRouteToHost(ConnectivityManager.TYPE_WIFI, lookupHost("localhost")))

Здесь вы сначала сделали поиск хоста, а затем вы запрашиваете маршрут к нему. Он будет работать только для статических адресов (например, localhost), где реального поиска не будет. Если вам нужен поиск DNS для разрешения адреса хоста, он будет неудачным. Как правило, requestRouteToHost удобен только для статических адресов.