Это продолжение ответа Eng.Fouad , то есть путем анализа публичного IP-адреса с checkip.org (используя JSoup ) ::
Метод (Incase, если вы получили ошибку исключения из предыдущего метода):
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
**********
public static String getPublicIp()
{
String myip="";
try{
Document doc = Jsoup.connect("http://www.checkip.org").get();
myip = doc.getElementById("yourip").select("h1").first().select("span").text();
}
catch(IOException e){
e.printStackTrace();
}
return myip;
}
Пример метода вызова:
<your class name> wifiInfo = new <your class name>();
String myIP = wifiInfo.getPublicIp();
Скомпилируйте следующую библиотеку в ваших зависимостях build.gradle
compile 'org.jsoup:jsoup:1.9.2'
JSoup скомпилирован с использованием Java API версии 8, поэтому добавьте следующее в build.gradle defaultConfig {}
jackOptions{
enabled true
}
и измените опцию компиляции на:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
И последнее, но не менее важное: поместите следующий код в метод onCreate (), поскольку по умолчанию вы не должны запускать сетевую операцию с помощью пользовательского интерфейса (рекомендуется через службы или AsyncTask), а затем пересобирать код.
StrictMode.enableDefaults();
Протестировано и работает на Lolipop и Kitkat.