美文网首页
Android获取设备不同网络环境下ip地址

Android获取设备不同网络环境下ip地址

作者: APP福星高照 | 来源:发表于2022-04-11 18:32 被阅读0次
/**
 * 获取IP
 * 
 * @param context
 * @return
 */
public static String getIP(Context context) {
    String ip = "0.0.0.0";
    ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
    int type = info.getType();
    if (type == ConnectivityManager.TYPE_ETHERNET) {
        ip = getEtherNetIP();
    } else if (type == ConnectivityManager.TYPE_WIFI) {
        ip = getWifiIP(context);
    }
    return ip;
}

/**
 * 获取有线地址
 * 
 * @return
 */
public static String getEtherNetIP() {
    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().toString();
                }
            }
        }
    } catch (SocketException ex) {
        Log.e("WifiPreference IpAddress", ex.toString());
    }
    return "0.0.0.0";
}

/**
 * 获取wifiIP地址
 * 
 * @param context
 * @return
 */
public static String getWifiIP(Context context) {
    android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) context
            .getSystemService(android.content.Context.WIFI_SERVICE);
    WifiInfo wifiinfo = wifi.getConnectionInfo();
    int intaddr = wifiinfo.getIpAddress();
    byte[] byteaddr = new byte[] { (byte) (intaddr & 0xff),
            (byte) (intaddr >> 8 & 0xff), (byte) (intaddr >> 16 & 0xff),
            (byte) (intaddr >> 24 & 0xff) };
    InetAddress addr = null;
    try {
        addr = InetAddress.getByAddress(byteaddr);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    String mobileIp = addr.getHostAddress();
    return mobileIp;
}

@see https://www.cnblogs.com/afluy/p/4465521.html

相关文章

网友评论

      本文标题:Android获取设备不同网络环境下ip地址

      本文链接:https://www.haomeiwen.com/subject/dncwsrtx.html