Система вещания не доставлена ​​на приемник вещания - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь реализовать приемник, который реагирует на подключение или отключение устройств 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

Также я проверил неявную трансляцию исключения , и эти два действия перечислены там.

1 Ответ

0 голосов
/ 23 ноября 2018

Попробуйте

<receiver android:name=".BleReceiver">
            <intent-filter>
                <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
                <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
            </intent-filter>
        </receiver> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...