android:在ICS上通过WIFI获取IP

时间:2012-05-31 13:52:03

标签: android

我想获得WIFI连接使用的IP(不是3G)。有谁知道怎么做? 我用过:

public 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) {
    Log.e(LOG_TAG, ex.toString());
}
return null;

}

但它会在ICS上返回3G IP。

谢谢,

亚历

2 个答案:

答案 0 :(得分:0)

WifiInfo winfo = ((WifiManager)this.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo();
winfo.getIpAddress();

在执行上述操作之前,您可能需要检查是否已连接到Wifi

答案 1 :(得分:0)

您无法检测基于IP地址的连接类型,因为您的移动网络和家庭WiFi网络都可以分配私有IP地址。

您需要做的是首先检测您是否拥有移动网络或WiFi连接,然后根据该信息获取该连接的IP地址。

在SO中查看此thread与ICS上的问题相同