This is how I get data from broadcasts, little bit of more code but its way simpler to read 
for future, in case of complex stuff get going.
Intent intent = new Intent(context, BroadcastReciever.class);
SimpleResultReciever resultReciever = new SimpleResultReciever(new Handler())
         .setCallback(new OnLocationCallback() {
             @Override
             public void onRecieverLocation(Location location) {
                  if(location != null) {
                        MainActivity.this.location = location;
                   }
             }
         });
intent.putExtra(SimpleResultReciever.KEY_RESULT_RECIEVER, resultReciever);
//call intent or create pending intent you will use broadcast stuff.
public class SimpleResultReciever extends ResultReceiver {
    public final static String KEY_RESULT_RECIEVER = "bundle.broadcast.reciever.callback";
    private OnLocationCallback callback;
    public LocationResultReciever setCallback(OnLocationCallback callback) {
        this.callback = callback;
        return this;
    }
    /**
     * Create a new ResultReceive to receive results.  Your
     * {@link #onReceiveResult} method will be called from the thread running
     * <var>handler</var> if given, or from an arbitrary thread if null.
     *
     * @param handler
     */
    public LocationResultReciever(Handler handler) {
        super(handler);
    }
    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        super.onReceiveResult(resultCode, resultData);
        Location location = resultData.getParcelable(LocationManager.KEY_LOCATION_CHANGED);
        if(callback != null) {
            callback.onRecieverLocation(location);
        }
    }
}
public class LocationBroadcastReciever extends BroadcastReceiver {
    public LocationBroadcastReciever() {
        super();
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extra = intent.getExtras();
        Location location = extra.getParcelable(LocationManager.KEY_LOCATION_CHANGED);
        ResultReceiver res = extra.getParcelable(LocationResultReciever.KEY_RESULT_RECIEVER);
        if(res != null) {
            Bundle data = new Bundle();
            data.putParcelable(LocationManager.KEY_LOCATION_CHANGED, location);
            res.send(Activity.RESULT_OK, data);
        }
    }
}