У меня есть простой фрагмент в моей деятельности, в котором я включаю и отключаю адаптер Bluetooth, и я хочу прослушивать изменения состояния адаптера Bluetooth с помощью BroadcastReceiver изнутри фрагмента. Причина в том, что я хочу напрямую изменять элементы интерфейса Fragment при изменении состояния Bluetooth. Это мой код:Метод BroadcastReceiver фрагментации onCreate не вызван
public class FragmentBT extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
IntentFilter iFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(BtStateChangedReceiver, iFilter);
}
@Override
public void onDestroy()
{
super.onDestroy();
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(BtStateChangedReceiver);
}
public BroadcastReceiver BtStateChangedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
... change UI based on the extra data from intent ...
}
}
}
Когда я включить или отключить BT в устройстве с помощью кнопки действия в ActionBar моего фрагмента, БТ включается и выключается, но мой приемник никогда не вызывается. Я никогда не попадаю в метод onReceive приемника. Я понимаю, что здесь довольно распространенный вопрос, но я пробовал решения от нескольких, но не работал (и все они включены в мой текущий код).
Благодарим за любые советы!
Надеюсь, вы уже определили разрешение на использование в вашем манифесте. –
Bhavesh: Да, у меня есть разрешения BLUETOOTH и BLUETOOTH_ADMIN. Mateus: Я не. Я только слушаю трансляцию. Я предполагаю, что состояние БТ изменилось, а трансляция передается системой. Не было бы смысла слушать это иначе, я ошибаюсь? –
Это из-за обмана, как будто я стараюсь по возможности поместить своих приемников в манифест. – e4c5