With android (java), you can do this:
public static String getLocalIpAddress() {
try {
// gera uma lista enumerada de todas as interfaces de endereços de rede
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement(); // pega o elemento
// gera uma nova lista com todos os endereços de IP da interface
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement(); // pega o endereço IP
// verifica se este endereço não é um "localhost" e verifica se este é um IP de protocolo IPv4
if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
// retorna o valor em string
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return null;
}
This function returns IPv4 protocol IP
If you want IPv6, you should use in your if of this form:
if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address)
Or so to get either:
if (!inetAddress.isLoopbackAddress() && (inetAddress instanceof Inet6Address || inetAddress instanceof Inet4Address))
And then you send this information to the site. Best, right?
Sources:
Android documentation
StackOverflow