コードを使用して、デバイスが使用している 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 は WiFi に接続されており、セルが有効になっている SIM カードがあります。
上記のコードから返される IP は、電話がセル信号を使用していることを示す 10. アドレスであり、ネットワークから利用可能な 192. アドレスを使用する必要がある場合です。
上記のコードを変更して 192. を選択する方法はありますか? それとも、これは故障している電話ですか?
モバイルネットワークを無効にしたり、機内モードにしたりしてみました。
機能した唯一のことは、SIMカードを取り外すことでした!! 内部アドレスを取得するためだけにユーザーがこれを行うとは期待できませんか?
ありがとう