Как получить IPv4, когда устройство подключено к мобильным данным - PullRequest
1 голос
/ 17 апреля 2019

Когда я пытаюсь получить 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());
            }
        });
    }
...