android - 如何使用 BroadcastReceiver 处理多个 Action ?

标签 android android-intent android-broadcast

我正在尝试使用 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/

相关文章:

没有显示拨号 UI 的 android 通话?

android - 在android中注册广播接收器

android - PreferenceFragment 已弃用

java - 抽屉导航 onNavigationDrawerItemSelected 在 MainActivity onCreate 之前调用?

java - AlertDialog OnClose 事件 Android

c# - 在 Activity 之间传递图像

安卓 : Run service when my app is not in use

java - 在面向 Oreo 的 Android 应用程序上使用 Android Broadcast

android - onNmeaReceived 有什么替代方案吗?

java - 从 Android 手机获取电话号码