Android獲取藍牙地址


最近做一個項目,發現Android6.0以上的版本獲取的藍牙地址始終為02:00:00:00,
Google一下發現Android早就封掉了相關接口,於是想到反射的方式去獲取Mac地址,在此記錄一下

Android 6.0以下的版本

直接使用bluetoothadapter.getaddress()

Android 6.0以上

private String getBluetoothAddress(BluetoothAdapter adapter) {
        if (adapter == null) {
            return null;
        }

        Class<? extends BluetoothAdapter> btAdapterClass = adapter.getClass();
        try {
            Field mServiceField = adapter.getClass().getDeclaredField("mService");
            mServiceField.setAccessible(true);
            Object btManagerService = mServiceField.get(adapter);
            if (btManagerService != null) {
                 return (String) btManagerService.
                            getClass(.getMethod("getAddress").invoke(btManagerService);
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogWriter.writeLog(TAG, e.getMessage());
            return null;
        }
}

PS:有的手機需要在藍牙已經打開的時候才能獲取到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM