Трябва да използвам 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 "";
}

Проблемът е, че кодът избира 10.xx.xx.xx IP вместо 192.xxx.xxx.xxx адрес, който искам. Как мога да го накарам да използва 192 адреса?

Използвам Samsung Galaxy Express. Изглежда, че използва Cell, а не WiFi за някои задачи, което създава проблеми. Имам таблет Samsung, който няма клетъчен сигнал и това избира адреса 192 (единствената опция, която познавам), но като цяло приложението работи, като Express не използва Cell, а не WiFi, както изглежда.

Опитах да изключа "мобилни мрежи", но това не помогна.

Като допълнителен въпрос, някаква идея как да деактивирам напълно мобилната мрежа на телефона си, без да се налага да вадя SIM картата?

Благодаря


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


Отговори (1)


Проблемът е, че кодът избира 10.xx.xx.xx IP вместо 192.xxx.xxx.xxx адрес, който искам. Как мога да го накарам да използва 192 адреса?

Изглежда, че проблемът ви е слаба wifi връзка, която кара телефона ви да избира мобилни данни пред wifi. Не можете да принудите 192.xxx адрес (т.е. Wifi) от приложението, това е системен атрибут.

Като допълнителен въпрос, някаква идея как да деактивирам напълно мобилната мрежа на телефона си, без да се налага да вадя SIM картата?

В идеалния случай трябва да имате опция за деактивиране на данните в менюто за захранване (продължително натискане на бутона за захранване на samsung). Ако това не помогне, направете следното, отидете на настройки > още мобилни мрежи > точки за достъп > изтрийте всички APN, които виждате.

person Taranfx    schedule 10.01.2014
comment
благодаря за отговора. Опитах да задържа бутона за захранване и всичко, което получих, беше начин да премахна приложенията от работа. Опитах да прегледам своите APN и всичко, което се показваше, беше ATT Phone. Нямаше как да го махна. Менюто показваше само добавяне на ново или нулиране (опитах нулиране) и не ми позволи да редактирам записа на ATT Phone. Имам пълен WiFi сигнал, тъй като стоя до рутера! - person Dan James Palmer; 10.01.2014
comment
Няма ли да изберете 192. адреса чрез манипулиране на кода по-горе? - person Dan James Palmer; 10.01.2014
comment
Включих самолетен режим, след това активирах отново wifi и все още нямам радост - person Dan James Palmer; 10.01.2014
comment
@DanJamesPalmer опитайте да добавите нов APN с произволни стойности и го активирайте - person Taranfx; 13.01.2014