BluetoothAdapter getAddress () return 02: 00: 00: 00: 00: 00 - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь вернуть адрес Bluetooth ma c моего устройства, но это не работает, и возвращаю этот адрес: 02: 00: 00: 00: 00: 00.

-Я использую уровень API 28
-Я могу получить свой Bluetooth ma c адрес в моих android системных настройках, но не программно в моем приложении.
-Я могу получить ma c адрес этого устройства программно с других устройств.

Я понимаю, что доступ к адресу ma c предназначен только для системных приложений, но если это правда, почему другие устройства получают мой адрес ma c, а не я!

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
test.setText(adapter.getAdress());

Я пробую много разрешений, но проблема все та же!

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
<uses-permission android:name="android.permission.INTERNET" />

1 Ответ

0 голосов
/ 28 мая 2020

Начиная с Android 6, приложения Marshmallow больше не имеют доступа к аппаратному Bluetooth-адресу MA C. Это изменение было внесено, поскольку адрес использовался многими приложениями для идентификации и отслеживания смартфонов. Чтобы избежать поломки существующих приложений, метод получения все еще существует, но возвращает фиктивный адрес. Подробнее см. Соответствующее примечание в официальных примечаниях к выпуску Android здесь

А как насчет видимости адреса MA C для других устройств?

  • Bluetooth Low Energy (LE) не использует аппаратный адрес MA C для связи. Он использует его случайный вариант (подробнее см. здесь ). Поскольку Bluetooth LE не прекращает сканирование ближайших устройств в фоновом режиме, даже когда пользователь явно отключает Bluetooth, эта функция имеет большое значение ;-)

  • Bluetooth classi c делает не рандомизировать адрес MA C. Но в отличие от Bluetooth LE пользователь может, по крайней мере, легко и полностью отключить Bluetooth.

...