关于获取android的wifi-ip地址
最近做项目时,出了点小问题,在博客中记录下。
由于项目需要获取当前android系统的wifi-ip地址,习惯性的随手在网上一搜,找了段代码就用了,也测试了,可以正常获取,代码如下:
1 try { 2 for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 3 NetworkInterface intf = en.nextElement(); 4 for (Enumeration<InetAddress> enumIpAddr = intf 5 .getInetAddresses(); enumIpAddr.hasMoreElements();) { 6 InetAddress inetAddress = enumIpAddr.nextElement(); 7 if (!inetAddress.isLoopbackAddress()) { 8 String ip = inetAddress.getHostAddress().toString(); 9 } 10 } 11 } 12 } catch (SocketException ex) { 13 ex.printStackTrace(); 14 }
结果项目交付的时候出问题了,客户那边怎么也用不了,结果对方用的是3G卡,那个IP地址被上面的代码一起获取出来了,导致出问题了。以上代码是获取wifi和3G网络ip地址的。
如果只获取WIFI的IP地址,代码如下:
1 // 只获取wifi地址 2 WifiManager wifimanage = (WifiManager) getSystemService(Context.WIFI_SERVICE);//获取WifiManager 3 //检查wifi是否开启 4 if(wifimanage.isWifiEnabled()) { // 没开启wifi时,ip地址为0.0.0.0 5 WifiInfo wifiinfo= wifimanage.getConnectionInfo(); 6 String ip = intToIp(wifiinfo.getIpAddress()); 7 }
1 //将获取的int转为真正的ip地址,参考的网上的,修改了下 2 private String intToIp(int i) { 3 return (i & 0xFF)+ "." + ((i >> 8 ) & 0xFF) + "." + ((i >> 16 ) & 0xFF) +"."+((i >> 24 ) & 0xFF); 4 }