我正在尝试使用 BroadcastReceiver
来处理多个操作。接收者注册了一个 Intent 过滤器,但这限制了我只能向接收者发送一种 Action 类型的 Intent (参见Intent.getAction();
)
这是我的 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
}
}
}
我注册 Intent 的地方看起来像这样(在服务类中):
@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);
这种方式迫使我为每个要传递给 MyBroadcastReceiver 的 Intent 设置 Action("MyBroadcastReceiver")。
但是我想传递具有不同操作的 Intent ,我应该如何进行?
或者这不是一个好的方法,最好为每个不同的 Intent 使用一个单独的 BroadcastReceiver
实现和它自己的 IntentFilter
?
最佳答案
BroadcastReceiver
可以处理多个 Action ,将它们添加到 intent 过滤器中
IntentFilter filter = new IntentFilter();
filter.addAction("action1");
filter.addAction("action2");
然后用那个过滤器注册它
registerReceiver(mbr, filter);
在你自己的接收开关中进行操作
switch(intent.getAction()){
case action1:
// do something
break;
case action2:
// do something
break;
}
关于android - 如何使用 BroadcastReceiver 处理多个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34565725/