Я использовал следующий код: причина, по которой я использовал hashCode, заключалась в том, что я получал некоторые значения мусора, добавленные к IP-адресу, когда я использовал getHostAddress
.Но hashCode
работал очень хорошо для меня, так как тогда я могу использовать Formatter для получения IP-адреса с правильным форматированием.
Вот пример выходных данных:
1.using getHostAddress
: ***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.using hashCode
и Formatter
: ***** IP=238.194.77.212
Как видите, 2-й метод дает мне именно то, что мне нужно.
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()) {
String ip = Formatter.formatIpAddress(inetAddress.hashCode());
Log.i(TAG, "***** IP="+ ip);
return ip;
}
}
}
} catch (SocketException ex) {
Log.e(TAG, ex.toString());
}
return null;
}