android獲取裝置eth0,eth1,wlan0的IP地址
阿新 • • 發佈:2019-01-31
在做一些跟網路相關的需求時,很多時候需要獲取到相關網路型別的IP地址,如下圖:
這個時候用什麼方法來獲取這個IP地址呢?樓主在之前的開發中,找到了以下方法,程式碼如下,僅供參考:
其中的ipType就是需要獲取的網路ip地址型別,我們可以傳入eth1,eth0,wlan0,等,為了正確獲取到ip地址,我們需要過濾掉ipv6的地址和127.0.0.1。/** * Get Ip address 自動獲取IP地址 * * @throws SocketException */ public static String getIpAddress(String ipType) throws SocketException { String hostIp = null; try { Enumeration nis = NetworkInterface.getNetworkInterfaces(); InetAddress ia = null; while (nis.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) nis.nextElement(); if (ni.getName().equals(ipType)) { Enumeration<InetAddress> ias = ni.getInetAddresses(); while (ias.hasMoreElements()) { ia = ias.nextElement(); if (ia instanceof Inet6Address) { continue;// skip ipv6 } String ip = ia.getHostAddress(); // 過濾掉127段的ip地址 if (!"127.0.0.1".equals(ip)) { hostIp = ia.getHostAddress(); break; } } } } } catch (SocketException e) { e.printStackTrace(); } Log.d("vivi", "get the IpAddress--> " + hostIp + ""); return hostIp; }
感謝閱讀,有什麼不對的地方還請大家指正。