您的位置:首页 > 移动开发 > Android开发

Android: get IP address of device

2012-04-15 00:49 246 查看
在网上查了下,多数使用下列代码:

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" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: