android - BroadcastReceiver onReceive() 不工作

标签 android android-intent broadcastreceiver localbroadcastmanager

我不明白为什么 onReceive 方法从未被调用。我已经遵循了网上的所有示例,并且浏览了该网站上的许多类似问题。有任何想法吗?我错过了什么吗?

public class MainActivity extends Activity {

    public BroadcastReceiver myReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            Log.d("Receiver", "Receiving message");

            String action = intent.getAction();
            String message;

            if (action.equals(BUTTON_ACTION)) {

                message = intent.getStringExtra("BUTTON");
                Log.d("R", message);

            }
        }

    };

    String BUTTON_ACTION = "button";

    @Override
    protected void onResume() {
        super.onResume();

        LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver,
                new IntentFilter(BUTTON_ACTION));

    }

    @Override
    protected void onPause() {

        super.onPause();
        LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);

    }

此时,按下按钮时我会收到日志。但我的接收器中从未到达 onReceive 方法。

    public void button1(View view) {

        Log.d("sender", "Broadcasting message");

        Intent broadcastIntent = new Intent();

        broadcastIntent.setAction(BUTTON_ACTION).addCategory("Button Press")
                .putExtra("BUTTON", "Button 1 has been pressed.").addFlags(Intent.));

        LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);

    }

}

最佳答案

看起来您正在发送带有类别集的广播 Intent ,但您的 BroadcastReceiver 未设置为处理类别。如果您从广播 Intent 中删除该类别(或将其添加到IntentFilter),这可能会为您修复。

来自文档:

Note that unlike the action, an IntentFilter with no categories will only match an Intent that does not have any categories.

( http://developer.android.com/reference/android/content/IntentFilter.html )

关于android - BroadcastReceiver onReceive() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682990/

相关文章:

java - 从非 UI 线程更新 "checkBox"

javascript - Titanium 辅助功能订单问题

android - 为服务指定 SEND(共享) Intent 过滤器

Android 深层链接到服务?

android - 在后台收听传入的文本

android - android 中 init.rc 的语言是什么?

android - 更新 Fragment 中的 ListView (ViewPager)

android - ActivityNotFoundException 即使在 list 中声明之后

java - 使用警报管理器广播数据

android - 从服务到 Activity 的 sendBroadcast() 处出现 NullPointerException