Нужно использовать 192. внутренний IP-адрес, мой телефон выбирает 10

Код, который я использую для получения IP-адреса моего устройства:

public static String getIPAddress(boolean useIPv4) {
    try {
        List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface intf : interfaces) {
            List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
            for (InetAddress addr : addrs) {
                if (!addr.isLoopbackAddress()) {
                    String sAddr = addr.getHostAddress().toUpperCase();
                    boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); 
                    if (useIPv4) {
                        if (isIPv4) 
                            return sAddr;
                    } else {
                        if (!isIPv4) {
                            int delim = sAddr.indexOf('%'); // drop ip6 port suffix
                            return delim<0 ? sAddr : sAddr.substring(0, delim);
                        }
                    }
                }
            }
        }
    } catch (Exception ex) { } // for now eat exceptions
    return "";
}

Проблема в том, что код выбирает IP-адрес 10.xx.xx.xx вместо адреса 192.xxx.xxx.xxx, который я хочу. Как я могу заставить его использовать адрес 192?

Я использую Samsung Galaxy Express. Кажется, что для некоторых задач используется Cell, а не WiFi, что вызывает проблемы. У меня есть планшет Samsung, у которого нет сигнала сотовой связи, и он выбирает адрес 192 (единственный известный мне вариант), но в целом приложение работает, а Express не работает, поскольку, похоже, использует сотовую связь, а не WiFi.

Я пробовал отключать "мобильные сети", но это не помогло.

В качестве дополнительного вопроса, есть идеи, как полностью отключить мобильную сеть на моем телефоне, не вынимая сим-карту?

Спасибо


person Dan James Palmer    schedule 10.01.2014    source источник


Ответы (1)


Проблема в том, что код выбирает IP-адрес 10.xx.xx.xx вместо адреса 192.xxx.xxx.xxx, который я хочу. Как я могу заставить его использовать адрес 192?

Похоже, ваша проблема заключается в слабом подключении к Wi-Fi, из-за чего ваш телефон выбирает мобильные данные вместо Wi-Fi. Вы не можете принудительно указать адрес 192.xxx (т.е. Wi-Fi) из приложения, это системный атрибут.

В качестве дополнительного вопроса, есть идеи, как полностью отключить мобильную сеть на моем телефоне, не вынимая сим-карту?

В идеале у вас должна быть возможность отключить данные в меню питания (длительное нажатие кнопки питания на Samsung). Если это не поможет, выполните следующие действия: перейдите в «Настройки»> «Дополнительные мобильные сети»> «Точки доступа»> «Удалите все APN, которые вы видите».

person Taranfx    schedule 10.01.2014
comment
спасибо за ответ, я попытался удерживать кнопку питания, и все, что я получил, это способ отключить запуск приложений. Я попытался просмотреть свои APN, и все, что показывалось, было телефоном ATT. Не было возможности удалить его. Меню показывало только добавление нового или сброс (пробовал сброс), и это не позволяло мне редактировать запись телефона ATT. У меня есть полный сигнал WiFi, так как я стою у маршрутизатора! - person Dan James Palmer; 10.01.2014
comment
Разве нельзя было выбрать 192. адрес, манипулируя кодом выше? - person Dan James Palmer; 10.01.2014
comment
Я включил режим полета, затем снова включил Wi-Fi, и все равно без радости. - person Dan James Palmer; 10.01.2014
comment
@DanJamesPalmer попробуйте добавить новый APN со случайными значениями и активировать его - person Taranfx; 13.01.2014