Получение широковещательной рассылки, отправленной из библиотечного модуля в модуле приложения - PullRequest
0 голосов
/ 07 ноября 2019

У меня проблема с получением трансляции, отправленной из модуля библиотеки Android в модуль приложения.

Я создаю явную трансляцию с действием и именем компонента. И отправьте эту трансляцию из модуля Android lib.

val intent = Intent()
intent.action = "com.example.action.SOME_ACTION"
intent.component = ComponentName("com.example", "com.example.MyReceiver")
sendBroadcast(intent)

Чтобы получить эту трансляцию, я создал приемник и зарегистрировал его в манифесте.

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
        <intent-filter>
            <action android:name="com.example.action.SOME_ACTION" />
        </intent-filter>
</receiver>

Этот приемник печатает полученное событие, но, к сожалению,Я не получаю никакой трансляции. Я что-то пропустил? Или это должно быть так, т.е. вы не можете получать трансляции, отправленные из библиотеки?

1 Ответ

0 голосов
/ 07 ноября 2019

попробуйте сделать так, это работает для меня

зарегистрируйте получатель, где вы хотите получать, используя этот код

    IntentFilter filter = new IntentFilter();
    filter.addAction("myCustomAction");
    registerReceiver(receiver, filter);

отправить трансляцию из другой библиотеки, как этот

    Intent intent = new Intent("myCustomAction");
    intent.putExtra("value", 0);
    intent.setComponent(null);
    context.sendBroadcast(intent);

теперь нет необходимости регистрировать получателя в AndroidManifest.xml

, чтобы установить ComponentName в ноль, поскольку ComponentName равно

Имя компонента приложения дляобработайте намерение или null, чтобы система могла найти его для вас.

...