获取ip地址(基本可行的方法)比如开启USB网络共享的情况、开启网络代理的情况、之前提到的Hacker手段同时打开蜂窝网络和WiFi网络(非WiFi热点)的情况等等,这些网络环境下都会存在多IP的情况,因此该方法不一定完全适用了
public InetAddress getIpAddress() { InetAddress inetAddress; InetAddress myAddr = null; //NetworkInterface.getNetworkInterfaces(获取主机上所有已知的网络接口,然后遍历每个NI的地址) try { for (Enumeration<NetworkInterface> networkInterface = NetworkInterface.getNetworkInterfaces(); networkInterface.hasMoreElements(); ) { NetworkInterface singleInterface = networkInterface.nextElement(); for (Enumeration<InetAddress> IpAddresses = singleInterface.getInetAddresses(); IpAddresses.hasMoreElements(); ) { inetAddress = IpAddresses.nextElement(); if (!inetAddress.isLoopbackAddress() && (singleInterface.getDisplayName().contains("wlan0") || singleInterface.getDisplayName().contains("eth0") || singleInterface.getDisplayName().contains("ap0"))) { myAddr = inetAddress; } } } } catch (SocketException ex) { Log.e("error", ex.toString()); } return myAddr; }