Я пытаюсь использовать BroadcastReceiver
для обработки нескольких действий. Приемник зарегистрирован с помощью фильтра намерений, но это ограничивает меня отправкой только приемного типа намерений в приемник (см. Intent.getAction();
)Как использовать BroadcastReceiver для обработки нескольких действий?
Это мой класс BroadcastReceiver
и способ, которым я хочу обрабатывать действия внутри него.
class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
switch(...){ //the criteria for switching to a particular case
... //some cases to handle here
}
}
}
Место, где я зарегистрировать цель выглядит следующим образом (в классе обслуживания):
@Override
public void onCreate() {
super.onCreate();
mbr = new MyBroadcastReceiver();
this.registerReceiver(mbr, new IntentFilter("MyBroadcastReceiver"));
}
Путь, как я делаю вызов выглядит следующим образом (на самом деле я просто установить слушателя к кнопка):
//creating the pending intent
PendingIntent myPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent("MyBroadcastReceiver"), 0);
//add button listener
remoteViews.setOnClickPendingIntent(R.id.my_button, myPendingIntent);
Таким образом заставляет меня SetAction ("MyBroadcastReceiver") для каждого намерения я хочу перейти к MyBroadcastReceiver.
Однако я хочу передать намерения, которые имеют различные действия, как мне следует продолжить?
Или это нехороший подход и лучше использовать для каждого разного намерения отдельную реализацию BroadcastReceiver
с ее собственными IntentFilter
?
Не можете ли вы добавить еще одно действие в свой «IntentFilter»? – pskink
Если я добавляю другое намерение, которое имеет другое действие, чем «MyBroadcastReceiver», оно не попадает в широковещательный приемник – Flowryn
, потому что у вашего «IntentFilter» есть только одно связанное с ним действие: добавьте еще один – pskink