How to get the real IP address ? I use Code below, the result always be 127.0.0.1
if (getIpType(context) == IP_TYPE_WIFI) {
WifiManager wifi_service = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcpInfo = wifi_service.getDhcpInfo();
WifiInfo wifiinfo = wifi_service.getConnectionInfo();
String ip = Formatter.formatIpAddress(dhcpInfo.ipAddress);
} else {
Runnable IpRunnable = new Runnable() {
@Override
public void run() {
InetAddress addr;
String localIp = null;
try {
addr = InetAddress.getLocalHost();
localIp = addr.getHostAddress();
} catch (UnknownHostException e) {
}
}
};
Thread payThread = new Thread(IpRunnable);
payThread.start();
}
Try this
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()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (Exception ex) {
Log.e("IP Address", ex.toString());
}
return null;
}