對於個人項目,我必須檢查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
但路線請求失敗:■