Android: get IP address of device

来源:互联网 发布:淘宝客服权重分流 编辑:程序博客网 时间:2024/05/20 07:38

在网上查了下,多数使用下列代码:

private 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("error", ex.toString());    }    return null;}

但是我在一部samsung nexus里(android 4.0 with 3g),上面代码返回的不是ip address,而是"fe80::a20b:baff:fecf:e43%wlan0",难道是因为3g的原因??没有再深究下去,不过使用下列代码可以解决问题

private String getIpAddress() {WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();    return intToIp(wifiInfo.getIpAddress());}private String intToIp(int i) {return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF)+ "." + (i >> 24 & 0xFF);}

当然,在androidmanifest.xml里要添加下面的permission

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


原创粉丝点击