How to programmatically retrieve the device IP address in Android for both Wi-Fi and mobile data connections, with Java code examples.
Android Get Mobile IP Address Code Example
Android Get Mobile IP Address :
/**
* Get the IP of current Wi-Fi connection
* @return IP as string
*/
private String getIP() {
try {
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
return String.format(Locale.getDefault(), "%d.%d.%d.%d",
(ipAddress & 0xff), (ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));
} catch (Exception ex) {
Log.e(TAG, ex.getMessage());
return null;
}
}
But what if you need to get the Mobile connection IP?
The answer is to check the NetWorkInterface like this:
/** Get IP For mobile */
public static String getMobileIP() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = (NetworkInterface) en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
String ipaddress = inetAddress .getHostAddress().toString();
return ipaddress;
}
}
}
} catch (SocketException ex) {
Log.e(TAG, "Exception in Get IP Address: " + ex.toString());
}
return null;
}
And if you want to get the IP as IPV4 just replace the line:
if (!inetAddress.isLoopbackAddress()) {
With:
if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) {
