Я пытаюсь реализовать приемник, который реагирует на подключение или отключение устройств Bluetooth.Тем не менее, я получаю сообщения только при открытом приложении.
Я добавил получателя в манифест:
<receiver android:name=".BleReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>
</receiver>
И мой приемник выглядит так:
public class BleReceiver extends BroadcastReceiver {
private static final String TAG = "BleReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Got intent: " + intent.getAction());
}
}
Это прекрасно работает, когда приложение открыто, но если я, например.используйте переключатель задач и проведите пальцем по активности, трансляции больше не принимаются.
Вывод adb shell cmd package query-receivers --brief -a android.bluetooth.device.action.ACL_CONNECTED
выглядит просто отлично:
Receiver #3:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
com.example.blelistenerapp/.service.ble.BleReceiver
Также я проверил неявную трансляцию исключения , и эти два действия перечислены там.