转自CSDN的Android_Tutor的博文,因为感觉很有用。
public 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 ex) { Log.e(LOG_TAG, ex.toString()); } return null; }
在Android_Tutor代码中,LOG_TAG需要加上双引号,另外我一直认为拿来主义很正确嘛,就比如这个方法,里面有些名称或类都不认识,没关系,知道能返回String类型的IP就行了,当然如果时间充裕的话,稍微理解下也好,细嚼慢咽当然好,囫囵吞枣不也为是一种方法。这个方法就是获取用户当前IP,无论是wifi还是3g上网,当设置为飞行模式的时候,获取的就是null了,