android获取本机IP地址

Ronys 2014-08-08 08:33:48
我再用小米3 Android4.4的 获取本机IPv4地址
怎么出现了两个
192.168.132.42
10.0.2.15
而换成其他手机只获取到192开头的。。。。

public String getLocalIP(boolean ipv6) {
final HashMap<String, InetAddress> addressMap = new HashMap<String, InetAddress>();

try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
final NetworkInterface intf = en.nextElement();

// http://code.google.com/p/imsdroid/issues/detail?id=398#c3
try {
if (NetworkInterface_isUp != null
&& !(Boolean) NetworkInterface_isUp.invoke(intf)) {
Log.i(TAG,
"interface=" + intf.getName()
+ " is not up,getDisplayName:"
+ intf.getDisplayName());
continue;
}
} catch (Exception e) {
}

for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
Log.d(NgnNetworkService.TAG + "getHostAddress:",
inetAddress.getHostAddress().toString());
if (inetAddress.isLoopbackAddress()
|| ((inetAddress instanceof Inet6Address) && ((Inet6Address) inetAddress)
.isLinkLocalAddress())) {
Log.d(NgnNetworkService.TAG,
"ip6:" + inetAddress.getHostAddress());
continue;
}
if (!inetAddress.isLoopbackAddress()
&& (inetAddress instanceof Inet4Address)
&& !inetAddress.isLinkLocalAddress()) {// android4.0以上获取IPV4
Log.d(NgnNetworkService.TAG,
"ip41:" + inetAddress.getHostAddress());
addressMap.put(intf.getName(), inetAddress);

}
if (((inetAddress instanceof Inet4Address) && !ipv6)
|| ((inetAddress instanceof Inet6Address) && ipv6)) {
Log.d(NgnNetworkService.TAG,
"ip42:" + inetAddress.getHostAddress());
addressMap.put(intf.getName(), inetAddress);
}
}
}
if (addressMap.size() > 0) {
// openvpn address
final InetAddress openvpn = addressMap
.get(OPENVPN_INTERFACE_NAME);
if (openvpn != null) {
final String openvpnAddr = openvpn.getHostAddress()
.toString();
Log.d(NgnNetworkService.TAG, "openvpn:" + openvpnAddr);
if (!NgnStringUtils.isNullOrEmpty(openvpnAddr)) {
return openvpnAddr;
}
}

final Iterator<Map.Entry<String, InetAddress>> it = addressMap
.entrySet().iterator();
Map.Entry<String, InetAddress> kvp;
while (it.hasNext()) {
kvp = it.next();
final InetAddress address = kvp.getValue();
Log.d(NgnNetworkService.TAG,
"usb0:" + address.getHostAddress());
if (kvp.getKey().equals(USB_INTERFACE_NAME)) {
continue;
}
return address.getHostAddress();
}
Log.d(NgnNetworkService.TAG, "return:"
+ addressMap.values().iterator().next()
.getHostAddress());
return addressMap.values().iterator().next().getHostAddress();
}
} catch (SocketException ex) {
Log.e(NgnNetworkService.TAG, ex.toString());
}
...全文
558 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ronys 2014-08-08
  • 打赏
  • 举报
回复
http://blog.csdn.net/up1up2up3/article/details/38445213

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧