registerReceiver BluetoothAdapter.ACTION_STATE_CHANGED не работает - PullRequest
0 голосов
/ 10 февраля 2019

Я работаю с Android Oreo и Bluetooth.Я хочу получить информацию о трансляции, когда новое устройство найдено и Bluetoothadapter изменил свое состояние.У меня есть следующий код:

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    IntentFilter filter2 = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);

    registerReceiver(BEReceiver_ADD, filter);
    registerReceiver(BEReceiver_Adapter, filter2);

, почему я получаю сигнал с BEReceiver_ADD, но не с BEReceiver_Adapter?Я никогда не вхожу в BEReceiver_Adapter.Что не так?

ПРИМЕЧАНИЕ: Я попробовал тот же код с Android 4.1, и он работает.Почему не работает с Android 8.0?

1 Ответ

0 голосов
/ 12 февраля 2019

BluetoothAdapter.ACTION_STATE_CHANGED, вызванный изменением состояния адаптера Bluetooth, например, включением / выключением.Также в более новых версиях Android изменился метод получения объекта адаптера, поэтому код для обратной совместимости должен выглядеть следующим образом:

BluetoothAdapter bluetoothAdapter = null;
if(android.os.Build.VERSION.SDK_INT >= 18) { 
     BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE); 
     bluetoothAdapter = bluetoothManager.getAdapter(); 
} else bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

Также я могу рекомендовать использовать library для работы с Rfcommпрофиль - потому что это значительно уменьшает количество кода поддержки и дает удобство в обратных вызовах.

...