当前位置: 代码迷 >> Android >> 关于android4.0 获取手机IP地址的有关问题
  详细解决方案

关于android4.0 获取手机IP地址的有关问题

热度:47   发布时间:2016-05-01 14:50:35.0
关于android4.0 获取手机IP地址的问题

获取手机IP地址的代码:


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 exception			Utils.log("WifiPreference IpAddress---error-" + e.toString());		}				return null; 	}



但是在4.0 下 会出现类似fe80::b607:f9ff:fee5:487e的IP地址,  这个是IPV6的地址,我们需要获得是的IPV4的地址,所以要在上诉代码中加一个判断

InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())


完整代码如下:

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 exception			Utils.log("WifiPreference IpAddress---error-" + e.toString());		}				return null; 	}





  相关解决方案