Я использую этот метод в своем проекте .. так что вы можете использовать его .. Он вернет вам IP устройства
private String getIpAddress() {
String ip = "";
try {
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
.getNetworkInterfaces();
while (enumNetworkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = enumNetworkInterfaces
.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface
.getInetAddresses();
while (enumInetAddress.hasMoreElements()) {
InetAddress inetAddress = enumInetAddress.nextElement();
if (inetAddress.isSiteLocalAddress()) {
ip += inetAddress.getHostAddress();
}
}
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
ip += "Something Wrong! " + e.toString() + "\n";
}
return ip;
}
Если вы хотите получить Publi c IP сети, к которой подключено ваше устройство с использованием этого кода ...
public class GetPublicIP extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... strings) {
String publicIP = "";
try {
java.util.Scanner s = new java.util.Scanner(
new java.net.URL(
"https://api.ipify.org")
.openStream(), "UTF-8")
.useDelimiter("\\A");
publicIP = s.next();
System.out.println("My current IP address is " + publicIP);
} catch (java.io.IOException e) {
e.printStackTrace();
}
return publicIP;
}
@Override
protected void onPostExecute(String publicIp) {
super.onPostExecute(publicIp);
Log.e("PublicIP", publicIp+"");
//Here 'publicIp' is your desire public IP
}
}
новый выполнить его
new GetPublicIP().execute();