Код, который я использую для получения 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.
Я пробовал отключать "мобильные сети", но это не помогло.
В качестве дополнительного вопроса, есть идеи, как полностью отключить мобильную сеть на моем телефоне, не вынимая сим-карту?
Спасибо