Code for obtaining the mobile phone IP Address:
public static String getLocalIpAddress(){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 e) {// TODO: handle exceptionUtils.log("WifiPreference IpAddress---error-" + e.toString());}return null; }
However, in 4.0, an IP address similar to fe80: b607: f9ff: fee5: ipve is displayed. This is an IPV6 address. We need to obtain an IPV4 address, therefore, add a judgment in the appeal code.
InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())
The complete code is as follows:
public static String getLocalIpAddress(){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() && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) { return inetAddress.getHostAddress().toString(); } } }}catch (SocketException e) {// TODO: handle exceptionUtils.log("WifiPreference IpAddress---error-" + e.toString());}return null; }