Я использую код для захвата IPv4-адреса, который использует мое устройство:
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 "";
}
Мой Samsung Galaxy Express подключен к Wi-Fi и имеет сим-карту с включенной мобильной связью.
IP-адрес, который я получаю из приведенного выше кода, — это 10-й адрес, который указывает, что телефон использует сигнал сотовой связи, когда мне нужно использовать 192-й адрес, доступный в сети.
Есть ли способ изменить приведенный выше код, чтобы выбрать 192., если он доступен? Или это телефон виноват?
Я пробовал отключать мобильную сеть, переводить в режим полета и т.д.
Единственное, что помогло, это извлечь сим-карту! Я не могу ожидать, что пользователи сделают это только для того, чтобы получить внутренний адрес?
Спасибо