当我读取设备的 IP 地址时,我总是得到本地 IP 地址。
我使用下面的代码片段来做到这一点。
public String getIpAddress() {
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()) {
String ip = Formatter.formatIpAddress(inetAddress.hashCode());
Log.d("VPNConnected",ip);
return ip;
}
}
}
} catch (Exception ex) {
Log.d("exception", ex.toString());
}
return "EMPTY";
}
但我需要在不使用任何外部主机或 Web api(例如http://jsonip.com )的情况下读取外部 IP 地址