【发布时间】:2013-01-15 15:02:26
【问题描述】:
我想为我的应用程序使用以下代码:
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
return -1;
}
它在我测试过的大多数设备上运行良好,但在 Nexus S Europe 和华为设备上,它会引发异常。
无法为 192.168.010.200 建立路由:未知主机
我已经尝试在我的应用程序类中使用以下代码修复它,但没有成功:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
我也尝试过使用 AsyncTask,但我遇到了同样的错误。这是我使用的代码:
private int mInetAddr = -1;
private boolean mInetAck = false; // Acknowledgement
private class AsyncInetAddress extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... hostname)
{
InetAddress inetAddress;
try
{
inetAddress = InetAddress.getByName(hostname[0]);
}
catch (UnknownHostException e)
{
mInetAddr = -1;
return null;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
| ((addrBytes[2] & 0xff) << 16)
| ((addrBytes[1] & 0xff) << 8)
| (addrBytes[0] & 0xff);
mInetAddr = addr;
return null;
}
@Override
protected void onPostExecute(Void result)
{
mInetAck = true; // Acknowledgement
}
}
你知道我该如何解决这个问题吗?
谢谢。
编辑:我在其他一些设备上试过,问题似乎只出现在版本 4.0.* 上。在 2.* 、 3.* 和 4.1+ 上运行良好。
现在问题出在那一行:
if (!connMgr.requestRouteToHost(2, inetAddr))
在哪里inetAddr = -938825536。第一个参数是彩信类型。在运行 4.0.3 或 4.0.4 的设备下,条件始终为真。
【问题讨论】:
-
你有抛出的异常吗?如果是这样,请发布日志
-
你得到了哪个例外?
-
我已经编辑了我的帖子,但有例外。
-
异常提示此设备连接有问题。 IP 192.168.10.200 通常表示本地网络。因此,请确保两台设备都以相同的方式连接到网络 GSM/WiFi 或配置了 VPN。
-
我所有的设备都已连接。这就是为什么它看起来很奇怪。
标签: android device inetaddress