首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取移动网络ip地址

获取移动网络ip地址
EN

Stack Overflow用户
提问于 2020-01-26 10:07:38
回答 2查看 127关注 0票数 1

你好,我用这种方法获取移动网络IP地址

代码语言:javascript
复制
public static String getMobileIPAddress() {
    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()) {
                    return  addr.getHostAddress();
                }
            }
        }
    } catch (Exception ex) { } // for now eat exceptions

    return "";
}

但是返回值似乎不是IP :fe80::dc19 19:94ff:fe6f:ae7b% but 0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-26 10:37:53

实际上你的代码是正确的。它得到了InetAddresses列表,其中ip地址也与mac地址一起出现。您必须使用InetAddressUtils.isIPv4Addressaddr instanceof Inet4Address (API >= 23)来过滤其中的ip地址。检查如下:

代码语言:javascript
复制
public static String getMobileIPAddress() {
    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() && 
                    addr instanceof Inet4Address) {
                    return  addr.getHostAddress();
                }
            }
        }
    } catch (Exception ex) { } // for now eat exceptions
    return "";
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-26 10:46:50

此代码获取WIFI IP地址:

代码语言:javascript
复制
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59917307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档