Android 4.0.3获取本地IP

时间:2012-03-24 07:58:52

标签: android wifi

我有android 4.0.3的问题。我正在使用以下方法获取本地IP:

public static String getLocalIpAddress() {
try {
    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
        NetworkInterface intf = en.nextElement();
        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
            InetAddress inetAddress = enumIpAddr.nextElement();
            if (!inetAddress.isLoopbackAddress()) {
                return inetAddress.getHostAddress().toString();
            }
        }
    }
} catch (SocketException ex) {
    ex.printStackTrace();
}
return null;
} 

它在android v2.1-2.3上运行得很好。但是在使用android 4.0.3的模拟器上它会返回类似mac-address的内容:fe80 :: fad0:bdff:fe4d:4871任何人都可以解释发生了什么事吗?

2 个答案:

答案 0 :(得分:3)

要仅获取IPv4地址,请更改

if (!inetAddress.isLoopbackAddress()) {

if (!inetAddress.isLoopbackAddress() && (inetAddress instanceof Inet4Address)) {

答案 1 :(得分:0)

使用getAllByName可能会更好。

正如我所提到的,您获得的地址是IPv6地址&amp;你不能将IPv6地址转换为IPv4地址。