private String getIPAddress() throws SocketException {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info == null || !info.isConnected()){
return null;
}
switch (info.getType()) {
case ConnectivityManager.TYPE_WIFI: {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifi == null) break;
WifiInfo wifi_info = wifi.getConnectionInfo();
String ipAddress = intToIp(wifi_info.getIpAddress());
return ipAddress;
}
case ConnectivityManager.TYPE_MOBILE: {
Enumeration interfaceEnumerations = NetworkInterface.getNetworkInterfaces();
while(interfaceEnumerations.hasMoreElements()){
NetworkInterface interfac = interfaceEnumerations.nextElement();
Enumeration inetAddresses = interfac.getInetAddresses();
while(inetAddresses.hasMoreElements()){
InetAddress address = inetAddresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress()) {
String addressIp = address.getHostAddress();
if(TextUtils.isEmpty(addressIp) || !addressIp.matches("(\d{1,3}.){3}\d{1,3}")) continue;
return addressIp;
}
}
}
break;
}
}
return null;
}