android获取手机ip地址wifi状态与非wifi状态

来源:互联网 发布:深锋网络 编辑:程序博客网 时间:2024/06/05 00:57

方法一(只适合wifi状态):

public static String getIp(Context contxext) {WifiManager wm = (WifiManager) contxext.getSystemService(Context.WIFI_SERVICE);// 检查Wifi状态if (!wm.isWifiEnabled())wm.setWifiEnabled(true);WifiInfo wi = wm.getConnectionInfo();int ipAdd = wi.getIpAddress();String ip = intToIp(ipAdd);return ip;}

public static String intToIp(int i) {return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF)+ "." + (i >> 24 & 0xFF);}

方法二(通用ipv4地址):
private String getIp() {        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 ex) {            ex.printStackTrace();        }        return null;    }

方法三(通用ipv4与ipv6)
/**     * Get IP address from first non-localhost interface     *     * @param useIPv4 true=return ipv4, false=return ipv6     * @return address or empty string     */    public static String getIPAddress(boolean useIPv4) {        try {            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());            for (NetworkInterface intf : interfaces) {                List<InetAddress> addrs = Collections.list(intf.getInetAddresses());                for (InetAddress addr : addrs) {                    if (!addr.isLoopbackAddress()) {                        String sAddr = addr.getHostAddress().toUpperCase();                        boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);                        if (useIPv4) {                            if (isIPv4)                                return sAddr;                        } else {                            if (!isIPv4) {                                int delim = sAddr.indexOf('%'); // drop ip6 port suffix                                return delim < 0 ? sAddr : sAddr.substring(0, delim);                            }                        }                    }                }            }        } catch (Exception ex) {        }        return "";    }



0 0
原创粉丝点击