So i was learning about BroadcastReceiver in android. BroadcastReceivers are based on observer design patterns (which makes them very interesting).
So what i am trying to achieve is to broadcast my message and inside same activity i want to receive the message (Just for testing purpose).
Here is the code snippet
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");
Here is the debugged output
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
Why it is not getting inside onReceive() method
What am i missing here
Any help?
You are sending your broadcast message before registering broadcast receiver. Try doing in the following way and it will work:
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);