为什么isSiteLocalAddress()在运行相同Android版本的同一型号设备上的行为不同?

时间:2014-05-31 04:23:08

标签: java android android-networking

我在运行相同版本的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。我提供了一个答案,但不知道为什么会这样。如果有人知道,仍然对为什么感兴趣。

0 个答案:

没有答案