Android-->最全获取本地IP的方法(Wifi/以太网/3G)

直接上代码

public String getIp() {

    {//获取 Wifi IP的方法

        WifiManager wifiManager = (WifiManager) this
                .getSystemService(Context.WIFI_SERVICE);

        if (wifiManager.isWifiEnabled()
                && wifiManager.getWifiState() == wifiManager.WIFI_STATE_ENABLED) {
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            if (wifiInfo != null) {
                int ipAddress = wifiInfo.getIpAddress();
                if (ipAddress == 0)
                    return "";
                return ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff)
                        + "." + (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff));
            }
        }
    }

    {//获取 以太网ip 的方法, 需要源码环境编译, 文章后面有下载地址;
        ConnectivityManager connectivityManager = (ConnectivityManager) this
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        LinkProperties properties = connectivityManager
                .getLinkProperties(ConnectivityManager.TYPE_ETHERNET);
        if (properties != null) {
            String ipString = properties.getAddresses().toString();

            Pattern pattern = Pattern.compile("\\d+.\\d+.\\d+.\\d+");
            Matcher matcher = pattern.matcher(ipString);
            if (matcher.find()) {
                return matcher.group();
            }
        }
    }

    {//获取 3G网络 ip的方法
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface
                    .getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf
                        .getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {
                        return inetAddress.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();
        }
    }
    return "";

}

注意: 获取不同设备网络环境的IP,请使用不同的方法, 不可通用;请使用上面对应的获取方法;

源码环境下载地址--> 点击下载class4.2


至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,976评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 一直以来都把负面的情绪写在文章里,觉得有点颓废,会传播负能量。但这大概是我为数不多能宣泄情绪的方法了吧。 我是一个...
    缉熙_f30d阅读 1,715评论 8 2
  • 面对一条路,已经不是他该不该走的问题,也由不得他选择。向前,有多大的几率能向死而生,后退,有多少的可能会生不如死。
    石希阅读 1,243评论 0 0

友情链接更多精彩内容