解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題
前言:
之前項目比較舊,手機版本還比較低,還使用eclipse開發(fā)。用到了需要獲取手機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)生問題 :
使用這個方法,在模擬器上是可以正常獲取wifi mac地址,但是在Android 6.0系統(tǒng)上,獲取的就有問題,返回的是“02:00:00:00:00:00”
▲ 問題分析 :
原來谷歌官方為了給用戶更多的數(shù)據(jù)保護,從這個6.0版本開始, Android 移除了通過 WiFi 和藍牙 API 來在應(yīng)用程序中可編程的訪問本地硬件標示符?,F(xiàn)在 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法都將返回 02:00:00:00:00:00
▲ 解決方案 :
正所謂上有政策,下有對策。我們可以使用如下代碼去獲取手機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"; }
手機必須是有網(wǎng)絡(luò)的狀態(tài)下,同時注意不要忘了添加權(quán)限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
總結(jié)
以上所述是小編給大家介紹的Android 6.0獲取wifi Mac地址為02:00:00:00:00:00的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android6.0 動態(tài)權(quán)限機制深入講解
這篇文章主要給大家介紹了關(guān)于Android6.0 動態(tài)權(quán)限機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Android開發(fā)調(diào)用WebService的方法示例
這篇文章主要介紹了Android開發(fā)調(diào)用WebService的方法,結(jié)合實例形式較為詳細的分析了Android調(diào)用WebService的原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下2017-10-10Flutter交互并使用小工具管理其狀態(tài)widget的state詳解
這篇文章主要為大家介紹了Flutter交互并使用小工具管理其狀態(tài)widget的state詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12Android自定義控件實現(xiàn)帶文字提示的SeekBar
這篇文章主要給大家介紹了關(guān)于Android自定義控件實現(xiàn)帶文字提示的SeekBar的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Android RecyclerView 數(shù)據(jù)綁定實例代碼
本文主要介紹Android RecyclerView 數(shù)據(jù)綁定的資料,這里詳細說明如何實現(xiàn) Android RecyclerView的數(shù)據(jù)綁定,并附示例代碼,有需要的小伙伴可以參考下2016-09-09Android端權(quán)限隱私的合規(guī)化處理實戰(zhàn)記錄
大家應(yīng)該都發(fā)現(xiàn)了,現(xiàn)在很多應(yīng)用市場都要求應(yīng)用上架需要用戶協(xié)議,這篇文章主要給大家介紹了關(guān)于Android端權(quán)限隱私合規(guī)化處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-08-08