解決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;
}
▲ 產生問題 :
使用這個方法,在模擬器上是可以正常獲取wifi mac地址,但是在Android 6.0系統(tǒng)上,獲取的就有問題,返回的是“02:00:00:00:00:00”
▲ 問題分析 :
原來谷歌官方為了給用戶更多的數(shù)據(jù)保護,從這個6.0版本開始, Android 移除了通過 WiFi 和藍牙 API 來在應用程序中可編程的訪問本地硬件標示符。現(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";
}
手機必須是有網絡的狀態(tài)下,同時注意不要忘了添加權限
<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的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
ViewPager+Fragment實現(xiàn)側滑導航欄
這篇文章主要為大家詳細介紹了ViewPager+Fragment實現(xiàn)側滑導航欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05
Android開發(fā)懸浮按鈕 Floating ActionButton的實現(xiàn)方法
這篇文章主要介紹了Android開發(fā)懸浮按鈕 Floating ActionButton的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Android音視頻開發(fā)之VideoView使用指南
VideoView組件內部同樣是使用MediaPlayer+SurfaceView的形式控制MediaPlayer對視頻文件進行播放,本文就來詳細講講它的使用方法,需要的可以參考一下2022-04-04
Flutter之自定義Dialog實現(xiàn)版本更新彈窗功能的實現(xiàn)
這篇文章主要介紹了Flutter之自定義Dialog實現(xiàn)版本更新彈窗功能的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Android實現(xiàn)TextView兩端對齊的方法
這篇文章主要介紹了Android實現(xiàn)TextView兩端對齊的方法,需要的朋友可以參考下2016-01-01

