private String getLocalIPAddress() throws SocketException{ for(Enumerationen = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){ NetworkInterface intf = en.nextElement(); for(Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){ InetAddress inetAddress = enumIpAddr.nextElement(); if(!inetAddress.isLoopbackAddress())){ return inetAddress.getHostAddress().toString(); } } } return "null"; }
但是,在android4.0以上系统中,上面的代码仅能够返回一个ipv6的地址,如果需要获取ip v4的地址,可以这么更改:
private String getLocalIPAddress() throws SocketException{ for(Enumerationen = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){ NetworkInterface intf = en.nextElement(); for(Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){ InetAddress inetAddress = enumIpAddr.nextElement(); if(!inetAddress.isLoopbackAddress() && (inetAddress instanceof Inet4Address)){ return inetAddress.getHostAddress().toString(); } } } return "null"; }