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

2022-04-11  本文已影响0人  APP福星高照
/**
 * 获取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

上一篇 下一篇

猜你喜欢

热点阅读