最近做一個項目,發現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:有的手機需要在藍牙已經打開的時候才能獲取到