Получен MAC-адрес Bluetooth для Android: 02:00:00:00:00:00

Попытка получить Bluetooth телефона Android с помощью

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String bleMAC = bluetoothAdapter.getAddress();

результат функции 02:00:00:00:00:00, я ожидаю что-то в строках 00:04:61:02:AA:FF

Также заметил, что MAC-адрес Wi-Fi совпадает с MAC-адресом Bluetooth. Можно ли использовать MAC-адрес Wi-Fi?


person Cleaton Pais    schedule 23.03.2020    source источник


Ответы (2)


Согласно изменениям Android 6.0:

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

Чтобы обеспечить пользователям более высокий уровень защиты данных, начиная с этого выпуска Android удаляет программный доступ к локальному аппаратному идентификатору устройства для приложений, использующих API Wi-Fi и Bluetooth. Методы WifiInfo.getMacAddress() и BluetoothAdapter.getAddress() теперь возвращают постоянное значение 02:00:00:00:00:00.

Чтобы получить доступ к аппаратным идентификаторам ближайших внешних устройств через сканирование Bluetooth и Wi-Fi, ваше приложение теперь должно иметь разрешения ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION.

person Cleaton Pais    schedule 23.03.2020
comment
Итак, каково решение? Добавление этих разрешений не решит проблему - person Mohamad Mousheimish; 15.05.2020
comment
нет возможности программно получить Bluetooth MAC с телефона. Это сама документация по Android - person Cleaton Pais; 16.05.2020
comment
добавление ничего не делает - person Bawantha; 07.09.2020

Согласно документу Android WifiInfo API, приложение Android должно быть системным приложением и иметь ниже 2 разрешений:

  • android.Manifest.permission.LOCAL_MAC_ADDRESS
  • Манифест.разрешения.ACCESS_FINE_LOCATION

Я пробовал на рутированном устройстве Android 10, все работало хорошо.

person Robin Shi    schedule 02.07.2021