您好,登錄后才能下訂單哦!
這篇文章主要介紹怎么解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
前言:
之前項(xiàng)目比較舊,手機(jī)版本還比較低,還使用eclipse開發(fā)。用到了需要獲取手機(jī)wifi Mac地址。使用了如下代碼:
// Android 6.0之前的版本可以用的方法(模擬器可以使用) private String getMacAddrOld() { String macString = ""; WifiManager wifimsg = (WifiManager)getSystemService(Context.WIFI_SERVICE); if (wifimsg != null) { if (wifimsg.getConnectionInfo() != null) { if (wifimsg.getConnectionInfo().getMacAddress() != null) { macString = wifimsg.getConnectionInfo().getMacAddress(); } } } return macString; }
▲ 產(chǎn)生問題 :
使用這個(gè)方法,在模擬器上是可以正常獲取wifi mac地址,但是在Android 6.0系統(tǒng)上,獲取的就有問題,返回的是“02:00:00:00:00:00”
▲ 問題分析 :
原來谷歌官方為了給用戶更多的數(shù)據(jù)保護(hù),從這個(gè)6.0版本開始, Android 移除了通過 WiFi 和藍(lán)牙 API 來在應(yīng)用程序中可編程的訪問本地硬件標(biāo)示符?,F(xiàn)在 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法都將返回 02:00:00:00:00:00
▲ 解決方案 :
正所謂上有政策,下有對策。我們可以使用如下代碼去獲取手機(jī)wifi Mac地址,同樣可以解決6.0以上版本問題。值得注意的是模擬器使用如下代碼去獲取是獲取不到的!
public static String getMacAddr() { try { List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface nif : all) { if (!nif.getName().equalsIgnoreCase("wlan0")) continue; byte[] macBytes = nif.getHardwareAddress(); if (macBytes == null) { return ""; } StringBuilder res1 = new StringBuilder(); for (byte b : macBytes) { res1.append(String.format("%02X:",b)); } if (res1.length() > 0) { res1.deleteCharAt(res1.length() - 1); } return res1.toString(); } } catch (Exception ex) { } return "02:00:00:00:00:00"; }
手機(jī)必須是有網(wǎng)絡(luò)的狀態(tài)下,同時(shí)注意不要忘了添加權(quán)限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
以上是“怎么解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。