对于个人项目,我必须检查MMS的设备LAN IP是否可到达。 我已经找到了提供APN的IP。现在我需要使用requestRouteToHost
方法来检查发现的代理是否有效。requestRouteToHost在4.0.3和4.0.4下的问题,但不是其他的
该代码完全适用于运行Android 2.3到4.0以及从4.1到更高版本的设备。 但它在4.0.3和4.0.4下引发了一个错误。我已经在多个设备上进行了测试,这不是设备问题,而是第一个版本。
if (!connMgr.requestRouteToHost(2, inetAddr)) {
Log.e(TAG, "unable to request route to host");
throw new IOException("Cannot establish route to proxy " + inetAddr);
} else {
Log.e(TAG, "route to host requested");
}
第一个条件总是如此,这是一个真正的问题。
上面的代码被包含到AsynTask我这样制成:
private class AsyncRoute extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... proxyAddr)
{
try
{
ensureRouteToHost(proxyAddr[0]);
Log.e(TAG, "OK ACK");
}
catch (Exception e)
{
e.printStackTrace();
}
mInetAck = true;
return null;
}
}
InetAddress是否发现是-938825536
这相当于192.168.010.200
。
要启动此的AsyncTask,我使用下面的代码:
new AsyncRoute().execute(MMSProxy);
while (!mInetAck);
基本上,它做一对夫妇的请求之前等待确认。
那么,有人知道是否有一个技巧绕过这个问题?我的意思是有一种方法可以做与connMgr.requestRouteToHost(2, inetAddr)
相同的功能,可以在任何设备上使用。
谢谢。
PS:测试在Desire S的2.3,Desire S的4.0.3,的Xperia lt30p 4.0.4,歌Nexus S 4.0.3,等等。
编辑:在那抛出异常,ping命令上的设备路由IP的工作原理:
> adb shell ping 192.168.10.200
PING 192.168.10.200 (192.168.10.200) 56(84) bytes of data.
64 bytes from 192.168.10.200: icmp_seq=1 ttl=251 time=4023 ms
64 bytes from 192.168.10.200: icmp_seq=5 ttl=251 time=81.3 ms
但路线请求失败:■