擷取Android裝置WIFI的MAC地址 “MAC地址”

來源:互聯網
上載者:User

標籤:net   stat   logs   ringbuf   熱點   hardware   getname   sse   nts   

需要指出的是:wifi狀態和wifi AP狀態是互斥的狀態;也就是一旦發現WIFI AP開啟,WIFI是不能被開啟的。

擷取Android裝置的WIFI MAC地址,首先需要將裝置中的WIFI個人熱點(AP)關閉;WIFI狀態和WIFI AP狀態是互斥的兩種狀態。也就是說:在WIFI AP開啟的狀態下,WIFI是不能被正常開啟的。

android系統擷取MAC地址的多種方式遍曆。

方法一:使用NetworkInterface

方法二:

private static String getIpAndMacAddress() {        String ip = "";        boolean isBreak = false;        String name = "";        try {            for (Enumeration<NetworkInterface> en = NetworkInterface                    .getNetworkInterfaces(); en.hasMoreElements();) {                NetworkInterface intf = en.nextElement();                name = intf.getName();                for (Enumeration<InetAddress> enumIpAddr = intf                        .getInetAddresses(); enumIpAddr.hasMoreElements();) {                    InetAddress inetAddress = enumIpAddr.nextElement();                    if (!inetAddress.isLoopbackAddress()                            && inetAddress instanceof Inet4Address) {                        ip = inetAddress.getHostAddress().toString();                        isBreak = true;                        break;                    }                }                if (isBreak) {                    break;                }            }        } catch (Exception e) {            e.printStackTrace();        }                String mac = "";        if (!TextUtils.isEmpty(name)) {            try {                byte[] address = NetworkInterface.getByName(name)                        .getHardwareAddress();                if (address != null) {                    mac = byte2hex(address, address.length);                }            } catch (SocketException e) {                e.printStackTrace();            }        }        if (!TextUtils.isEmpty(mac) && !TextUtils.isEmpty(ip)) {            return ip + "_" + mac;        }        return "";    }    private static String byte2hex(byte[] b, int length) {        StringBuffer hs = new StringBuffer(length);        String stmp = "";        int len = length;        for (int n = 0; n < len; n++) {            stmp = Integer.toHexString(b[n] & 0xFF);            if (stmp.length() == 1)                hs = hs.append("0").append(stmp);            else {                hs = hs.append(stmp);            }            if (n != len - 1) {                hs.append(":");            }        }        return String.valueOf(hs);    }

 

疑問:

1. 上述兩種方式哪種更加高效?

2. 兩種方式是否都有局限?

3. 留個未來…

擷取Android裝置WIFI的MAC地址 “MAC地址”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.