今天要整之前代码的ip地址获取不对,看了一下网上都是ipv6地址获取,贴一个呗。
//获取上下文 Context mContext = InstrumentationRegistry.getTargetContext(); ConnectivityManager conMann = (ConnectivityManager) mContext.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobileNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (wifiNetworkInfo.isConnected()) { WifiManager wifiManager = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(ipAddress); Log.e("motejia", "test: =======WIFI======"+ip ); } if (mobileNetworkInfo.isConnected()) { try { ArrayList<NetworkInterface> nilist = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface ni : nilist) { ArrayList<InetAddress> ialist = Collections.list(ni.getInetAddresses()); for (InetAddress address : ialist) { if (!address.isLoopbackAddress() && address instanceof Inet4Address) { String ipv4 = address.getHostAddress(); Log.e("motejia", "test: =======IPV4======="+ipv4 ); } } } 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.isLinkLocalAddress()) { String ipv6 = inetAddress.getHostAddress().toString(); Log.e("motejia", "test: =======IPV6======="+ipv6); } } } } catch (SocketException ex) { Log.e("motejia", ex.toString()); } }