无法同时接收广播 Activity

Unable to receive Broadcast In Same Activity

所以我在 android 学习了 BroadcastReceiver。 BroadcastReceivers 基于观察者设计模式(这使它们非常有趣)。
所以我想要实现的是广播我的消息并在 activity 内我想接收消息(仅用于测试目的)。 这是代码片段

    Log.d("ABC", "sending");
    Intent intent = new Intent("com.yourcompany.testIntent");
    intent.putExtra("value", "test");
    sendBroadcast(intent);



    Log.d("ABC", "sent");

    IntentFilter filter = new IntentFilter("com.yourcompany.testIntent");
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("ABC","INSIDE ");
            String value =  intent.getExtras().getString("value");
        }
    };

    Log.d("ABC", "receiving");
    registerReceiver(receiver, filter);
    Log.d("ABC", "received");

这是调试后的输出

04-06 20:40:52.446 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: sending 04-06 20:40:52.447 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: sent 04-06 20:40:52.448 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: receiving 04-06 20:40:52.453 20149-20149/com.example.illuminati.broadcastreceiver D/ABC:received

为什么它没有进入 onReceive() 方法
我在这里错过了什么
有帮助吗?

您在注册广播接收器之前发送您的广播消息。尝试按照以下方式进行操作,它会起作用:

IntentFilter filter = new IntentFilter("com.yourcompany.testIntent");
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("ABC", "INSIDE ");
            String value = intent.getExtras().getString("value");
        }
    };
    registerReceiver(receiver, filter);
    Intent intent = new Intent("com.yourcompany.testIntent");
    intent.putExtra("value", "test");
    sendBroadcast(intent);

如果您想在您的应用程序中广播消息(而不是向安装的每个应用程序),您还应该考虑使用 LocalBroadcastManager。参见 https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html