2

我不明白为什么永远不会调用 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);

    }

}
4

1 回答 1

3

看起来您正在发送带有类别集的广播意图,但您BroadcastReceiver没有设置为处理类别。如果您从广播意图中删除类别(或将其添加到IntentFilter),这可能会为您解决问题。

从文档:

请注意,与操作不同的是,没有类别的 IntentFilter 只会匹配没有任何类别的 Intent。

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

于 2013-07-16T17:34:37.353 回答