Отправить трансляцию только на определенную активность - PullRequest
10 голосов
/ 14 июля 2011

У меня есть один Activity , который создает BroadcastReceiver с IntentFilter в методе onCreate(...):

IntentFilter iFilter = new IntentFilter("action");

receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    }
};

registerReceiver(receiver, iFilter);

Надругая сторона - IntentService , которая должна посылать некоторые данные:

Intent intent = new Intent(getApplicationContext(), receiver.class);
intent.setAction("action");

[...]

sendBroadcast(intent);

Но, похоже, это не работает.Нет Вещание не получено.
Мой класс обслуживания находится в Android-библиотеке, возможно, это создает проблемы.

Спасибо за любые советы.

Ответы [ 2 ]

10 голосов
/ 14 июля 2011

Просто создайте намерение своим действием.

Intent intent = new Intent("action");
[...]
sendBroadcast(intent);

И подумайте о переименовании «действия» во что-то более значимое, например, «com.my.package.actions.SOME_ACTION».

Если вы хотите, чтобы ваши прикладные компоненты получали трансляцию, используйте:

  1. Зарегистрируйте разрешение в своем манифесте с уровнем защиты signature (и определите разрешение на использование для этого разрешения). Подробнее здесь .
  2. Используйте sendBroadcast(intent, permission) и укажите разрешение в 1.
6 голосов
/ 27 января 2014

, если намерение только внутри вашего приложения, рассмотрите возможность использования LocalBroadcastManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...