我是最近才接触Android的Android小白,领导给了一个任务让我去写一个获取手机IP地址的功能,这些东西网上应该有很多类似的,貌似很简单。于是上网搜了很多。开始找到的是这种方法
  public String getLocalHostIp()    {        String ipaddress = "";        try        {            Enumeration en = NetworkInterface                    .getNetworkInterfaces();            // 遍历所用的网络接口            while (en.hasMoreElements())            {                NetworkInterface nif = en.nextElement();// 得到每一个网络接口绑定的所有ip                Enumeration inet = nif.getInetAddresses();                // 遍历每一个接口绑定的所有ip                while (inet.hasMoreElements())                {                    InetAddress ip = inet.nextElement();                    if (!ip.isLoopbackAddress()                            && InetAddressUtils.isIPv4Address(ip                                    .getHostAddress()))                    {                        return ipaddress = "本机的ip是" + ":" + ip.getHostAddress();                    }                }            }        }        catch (SocketException e)        {            Log.e("feige", "获取本地ip地址失败");            e.printStackTrace();        }        return ipaddress;    }
然后我就自己用Android Studio自己创建了一个项目,来试试能不能获取手机的IP地址(因为网上很多,我就不写要添加的权限),代码复制到了Android Studio上去,发现InetAddressUtils 这个飘红,上网搜了一下发现要用这个东西需要引入 commons-lang.jar这个第三方包。我不是太想引入第三方包,就考虑用其他的方法解决,在打InetAddress的时候发现AS提示了Inet4Address 这个类,上去搜了一下Inet4Adress的用法 发现用Inet4Adress可以判断是否是IPV4的地址。我就把代码改成了下面的样子
 public String GetIp() {            try {                for (Enumeration en = NetworkInterface                        .getNetworkInterfaces(); en.hasMoreElements();) {                    NetworkInterface intf = en.nextElement();                    for (Enumeration ipAddr = intf.getInetAddresses(); ipAddr                            .hasMoreElements();) {                        InetAddress inetAddress = ipAddr.nextElement();                        // ipv4地址                        if (!inetAddress.isLoopbackAddress()                                && inetAddress instanceof Inet4Address) {                            return inetAddress.getHostAddress();                        }                    }                }            } catch (Exception ex) {            }            return null;    }

发现代码没有飘红,测试一下,能够获取wifi情况下的IPV4和4G的IPV4,如果没有数据流量关了,也能够返回一个空值。

更多相关文章

  1. WebView Android(安卓)调用js且须要获取返回结果
  2. 获得SDCard的路径
  3. Android(安卓)之 ContentProvider 共享数据库-通讯录
  4. android实现获取有线和无线Ip地址的方法
  5. 我的Android进阶之旅------>Android百度地图定位SDK功能学习
  6. (转)Android软件测试的日志文件抓取简介
  7. Android编译出现DSL element android.dataBinding.enabled is ob
  8. android-获取手机电话的状态
  9. Android(安卓)studio 学习6:配置Bmob SDK

随机推荐

  1. Android应用开发相关下载资源
  2. android webview 自己跳转
  3. android 把bitmap转成drawble后宽高不一
  4. andriod 动态设置TextView 和 RelativeLa
  5. Android中实现可滑动的Tab的3种方式
  6. Android(安卓)对text文本内容添加下划线
  7. Android(安卓)手机获取Mac地址的几种方法
  8. android抽屉效果的实现
  9. Android(安卓)ViewPager简单实现 - 倒计
  10. 【AS-AndroidX】AndroidX迁移-支持依赖库