0

我用来获取设备 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 地址?

我正在使用三星 Galaxy Express。对于某些导致问题的任务,它似乎使用 Cell 而不是 WiFi。我有一台没有 Cell 信号的三星平板电脑,它选择了 192 地址(我知道的唯一选项),但整个应用程序都可以正常工作,因为 Express 似乎不是使用 Cell 而不是 WiFi。

我试过关闭“移动网络”,但没有帮助。

作为一个额外的问题,知道如何完全禁用手机上的移动网络而无需取出 sim 卡吗?

谢谢

4

1 回答 1

0

问题是代码选择了 10.xx.xx.xx IP,而不是我想要的 192.xxx.xxx.xxx 地址。如何强制它使用 192 地址?

似乎您的问题是 wifi 连接较弱,导致您的手机选择移动数据而不是 wifi。您不能从应用程序中强制使用 192.xxx 地址(即 Wifi),它是一个系统属性。

作为一个额外的问题,知道如何完全禁用手机上的移动网络而无需取出 sim 卡吗?

理想情况下,您应该可以选择禁用电源菜单中的数据(长按三星电源按钮)。如果这没有帮助,请执行以下操作,转到设置 > 更多移动网络 > 接入点 > 删除您看到的所有 APN。

于 2014-01-10T10:02:49.253 回答