Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android6及之上版本獲取MAC地址

Android6及之上版本獲取MAC地址

編輯:Android開發教程

Android6及以上版本獲取MAC地址

為給用戶提供更嚴格的數據保護,從 Android 6.0 (Marshmallow) 版本開始,對於使用 WLAN API 和 Bluetooth API 的應用,Android 移除了對設備本地硬件標識符的編程訪問權。WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法現在會返回常量值 02:00:00:00:00:00。

 

現在,要通過藍牙和 WLAN 掃描訪問附近外部設備的硬件標識符,您的應用必須擁有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 權限。

 

refer Android 6.0 變更

 

注意:不要傻傻的以為添加了 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 權限就能訪問自己應用所在手機的MAC地址了,上面說的是掃描附近別的設備的硬件標識符。

 

目前的可替代方案

public 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 res = new StringBuilder();
            for (byte b : macBytes) {
                res.append(String.format("%02X:",b));
            }

            if (res.length() > 0) {
                res.deleteCharAt(res.length() - 1);
            }

            return res.toString();
        }
    } catch (Exception ex) {
        Log.w("MacAddr", "exception during retrieving MAC address: " + ex.getMessage());
    }

    return "02:00:00:00:00:00";
}

 

該方案可行的條件是保證WLAN(WiFi)處於開啟狀態,能不能訪問網絡不是必要條件。

 

refer Android 6.0 - You CAN NO longer access the Mac-Address? You can !

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved