向大家致以问候! 我厌倦了Android的ConnectivityManager类。我已经尝试了5个小时来让requestRouteToHost工作。我在模拟器上运行我的代码,但requestRouteToHost总是失败。我知道我有连接,因为我调用了getActiveNetworkInfo()并且它已连接。我添加了ACCESS_NETWORK_STATE和CHANGE_NETWORK_STATE权限无济于事。任何提示将不胜感激。
EDIT -------- InetAddress.isReachable方法也失败了。我正在使用文档中指定的主机名java.sun.com。我认为这是模拟器的一个问题。 萨姆
答案 0 :(得分:2)
看起来没有为WiFi实现requestRouteToHost()。 WifiStateTracker私有类没有requestRouteToHost()实现。相反,基类NetworkStateTracker的默认实现始终返回false。
答案 1 :(得分:0)
我建议使用真正的主机测试requestRouteToHost()
。我不仅不相信localhost
因为某个名字必须在Android上被识别,它将成为设备/模拟器本身,它既不会通过WiFi也不会通过3G,所以我希望requestRouteToHost()
能够失败。
您可能会遇到问题lookupHost()
。例如,我不确定this implementation是否支持localhost
。
答案 2 :(得分:0)
您正在进行的requestRouteToHost(lookupHost())组合风险很大
查看您的代码:
conn_man.requestRouteToHost(ConnectivityManager.TYPE_WIFI, lookupHost("localhost")))
在这里,您首先进行了主机查找,然后您正在请求到它的路由。它只适用于静态地址(如localhost),没有真正的查找。如果您需要DNS查找来解析主机地址,它将很容易失败。 通常,requestRouteToHost仅用于静态地址。