0

I have got an action bar activity with a LocalBroadcastManager defined exactly like in the answer here, except the only difference is that it is defined in an ActionBarActivity.

For some reason, no matter what I try I can't manage to get to the receiver's onReceive (i.e. successfuly receiving broadcast message).

Service code:

public class GcmIntentService extends IntentService {

@Override
protected void onHandleIntent(Intent intent) {
    Intent toDrawerActivity = new Intent(syncActionName);
    String syncType = extras.getString("data");
    toDrawerActivity.putExtra("syncType", syncType);
    System.out.println("sending intent in service");
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

}

And the activity code:

public class DrawerActivity extends ActionBarActivity {
private BroadcastReceiver dataUpdaterReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    System.out.println("in broadcast receiver");
  }
};

protected void onCreate(){
...
...
LocalBroadcastManager.getInstance(this).registerReceiver(dataUpdaterReceiver,
        new IntentFilter(GcmIntentService.syncActionName));
}

protected void onDestroy(){
    LocalBroadcastManager.getInstance(this).unregisterReceiver(dataUpdaterReceiver);

}

}

What exactly am I doing wrong here?

Community
  • 1
  • 1
Jjang
  • 11,250
  • 11
  • 51
  • 87

1 Answers1

2

Your have that problem due to you used the wrong parameter for sendBroadcast() method:

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

It should be:

LocalBroadcastManager.getInstance(this).sendBroadcast(toDrawerActivity);
Lei Guo
  • 2,550
  • 1
  • 17
  • 22