• Android获取有线和无线(wifi)的IP地址


        /**
         * 获取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;
        }
  • 相关阅读:
    错误:Error:未定义标识符"_TCHAR"
    C#中DateTime应用
    随机打乱数组元素
    C++中的运算符重载
    C#中的运算符重载
    C#访问修饰符
    VS2010中将当前选定项目做为启动项
    VS2010 ctrl+F5闪退解决方法
    IntelliSense: 应输入声明的解决方案
    C++数据类型范围
  • 原文地址:https://www.cnblogs.com/afluy/p/4465521.html
Copyright © 2020-2023  润新知