我在运行相同版本的Android(4.0.4)的同一网络上有两个三星Galaxy SII。当这个方法被调用时......
private String getIpAddress() {
String ip = "Something's wrong, of course!";
try {
Enumeration<NetworkInterface> networkInterfaces =
NetworkInterface.getNetworkInterfaces();
while ( networkInterfaces.hasMoreElements()) {
NetworkInterface ni = networkInterfaces.nextElement();
Enumeration<InetAddress>inetAddresses =
ni.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress address = inetAddresses.nextElement();
if (address.isSiteLocalAddress()) {
ip = address.getHostAddress();
}
}
}
} catch (SocketException se) {
se.printStackTrace();
ip = "some error occured; duck-dynasty!";
}
return ip;
}
在一台设备上返回有效的IP地址。但是当我在如上所述的相同模型设备上调用它时,它返回实例化的值;为什么呢?
我不是故意要问为什么这个方法在逻辑的立场上让我失望;这很明显。我的意思是,为什么两个设备如上所述会返回相互矛盾的结果呢?不应该一个网络接口&#39;地址满足条件?
修改
嗯,在没有正常行动的几天后,它开始返回一个有效的IP。我提供了一个答案,但不知道为什么会这样。如果有人知道,仍然对为什么感兴趣。