记录一下之前,在网上找到的获取自己本地ip的方法,普遍都是wifi,2,3,4,5g的 ,但是都缺少有线网络的
public static String getIPAddress(Context context) { NetworkInfo info = ((ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info != null && info.isConnected()) { if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络 try { //Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces(); 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() && inetAddress instanceof Inet4Address) { return inetAddress.getHostAddress(); } } } } catch (SocketException e) { e.printStackTrace(); } } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址 return ipAddress; } else if (info.getType() == ConnectivityManager.TYPE_ETHERNET) { //有线网络 try { // 获取本地设备的所有网络接口 Enumeration<NetworkInterface> enumerationNi = NetworkInterface .getNetworkInterfaces(); while (enumerationNi.hasMoreElements()) { NetworkInterface networkInterface = enumerationNi.nextElement(); String interfaceName = networkInterface.getDisplayName(); Log.i("tag", "网络名字" + interfaceName); // 如果是有线网卡 if (interfaceName.equals("eth0")) { Enumeration<InetAddress> enumIpAddr = networkInterface .getInetAddresses(); while (enumIpAddr.hasMoreElements()) { // 返回枚举集合中的下一个IP地址信息 InetAddress inetAddress = enumIpAddr.nextElement(); // 不是回环地址,并且是ipv4的地址 if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { Log.i("tag", inetAddress.getHostAddress() + " "); return inetAddress.getHostAddress(); } } } } } catch (SocketException e) { e.printStackTrace(); } } } else { //当前无网络连接,请在设置中打开网络 } return null; }