Android获取上网IP地址Demo

Android 上网 IP 地址获取的 demo 项目,比较实用,逻辑清晰,代码也挺简洁的,适合你快速集成到项目里用。用的是 Java 语言,通过遍历网络接口拿到设备的外网 IP,还兼顾了 Wi-Fi 和移动数据的兼容问题,得蛮周到。权限部分也考虑到了新版 Android 的限制,像ACCESS_NETWORK_STATEINTERNET权限都加上了,运行时权限也一并了。

网络状态检测用的是ConnectivityManager,可以判断当前是不是联网状态,避免空 IP 的尴尬。

通过NetworkInterface遍历网络接口,排除掉本地回环地址,挑出那条对外通信的IPv4地址。像下面这样:

Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
  NetworkInterface ni = networkInterfaces.nextElement();
  if (!ni.getName().equals("lo")) {
    Enumeration inetAddresses = ni.getInetAddresses();
    while (inetAddresses.hasMoreElements()) {
      InetAddress addr = inetAddresses.nextElement();
      if (addr instanceof Inet4Address && !addr.isLoopbackAddress()) {
        String ip = addr.getHostAddress();
        // IP 地址就在这里了
      }
    }
  }
}

比较贴心的一点是,它考虑到了设备同时连着 Wi-Fi 和移动网络的情况,给了你选择策略的空间,比如优先拿 Wi-Fi 的 IP 啥的。

建议你把这段逻辑封装成一个小工具类,用起来方便,也好维护。UI 那块也有个简单界面,方便测试输出。

哦对了,测试的时候记得确保设备联网,不然拿不到 IP 也正常哈。

如果你在开发需要联网通信的 App,或者要调试设备 IP,拿它练手或者做参考都挺合适。

rar 文件大小:1.14MB