public class IpUtils { 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 { 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){//宽带 ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Network network = mConnectivityManager.getActiveNetwork(); LinkProperties linkProperties = mConnectivityManager.getLinkProperties(network); //LinkProperties linkProperties = mConnectivityManager.getLinkProperties(ConnectivityManager.TYPE_ETHERNET); for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) { InetAddress address = linkAddress.getAddress(); if (address instanceof Inet4Address) { return address.getHostAddress(); } } // IPv6 address will not be shown like WifiInfo internally does. return ""; } } else { // 当前无网络连接,请在设置中打开网络 return "0.0.0.0"; } return null; } /** * 将得到的int类型的IP转换为String类型 * @param ip * @return */ public static String intIP2StringIP(int ip) { return (ip & 0xFF) + "." + ((ip >> 8) & 0xFF) + "." + ((ip >> 16) & 0xFF) + "." + (ip >> 24 & 0xFF); } }
Android 获取ip地址
最新推荐文章于 2024-02-19 21:06:58 发布