Когда я пытаюсь получить IP-адрес устройства с мобильными данными, он всегда возвращает IPv6, но когда я использую Wi-Fi, он выдает IPv4. Как я могу получить IPv4 в обоих условиях?
Вот мой код для IP-адреса.
Из MainActivity я вызываю этот метод.
Map<String,Object> header =new HashMap<String,Object>();
new WebService(this).callGetMethod("https://wtfismyip.com/text",header,this);
В классе WebService.
public void callGetMethod(String path, Map<String, Object> header, final WSResponse objWsResponse) {
this.objWsResponse = objWsResponse;
Call<ResponseBody> call = ApiClient.getClient().create(DemoInterface.class).getDemoData(path, header);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
String result = null;
if (response.code() == 200) {
try {
result = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
} else if (response.code() == 403) {
try {
result = response.errorBody().string();
} catch (IOException e) {
e.printStackTrace();
}
} else if (response.code() == 426) {
try {
result = response.errorBody().string();
Intent intent = new Intent(activity, Class.forName("com.exaple.example.ui.demoActivity"));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
activity.finish();
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
result = response.errorBody().string();
} catch (IOException e) {
e.printStackTrace();
}
}
objWsResponse.onSuccess(result, response.code());
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
objWsResponse.onFailure(call.toString());
}
});
}