¿Cómo pasar datos y abrir una actividad desde el widget? [Androide]

En miListProvider clase que implementaRemoteViewsFactory He puesto el siguiente código a continuación:

@Override
public RemoteViews getViewAt(int position) {
    RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.list_row);

rv.setTextViewText(R.id.heading, merch_name);
        rv.setTextViewText(R.id.content, teaser);

        Bundle extras = new Bundle();
        extras.putInt(WidgetProvider.EXTRA_ITEM, position);
        extras.putString(WidgetProvider.MERCHANT_ITEM, mWidgetItems.get(position).merchant_id);


        Intent fillInIntent = new Intent();
        fillInIntent.putExtras(extras);
        rv.setOnClickFillInIntent(R.id.llRow, fillInIntent);

  return rv;
}

Puse Logs en mionReceive deWidgetProvider tiene la ID correcta cuando hice clic, pero después de abrir la actividad no tiene la ID correcta donde se colocaextras. También hay tiempo para que no abra elActivity Proporcioné y solo abro miMainActivity. Esto sucede cuando eliminé mi aplicación derecently open app y luego usar elwidget.

Aquí está mi código paraonReceive en miWidgetProvider

 public class WidgetProvider extends AppWidgetProvider {

 public static final String TOAST_ACTION = "my.packagename.TOAST_ACTION";
public static final String MERCHANT_ITEM = "my.packagename.MERCHANT_ITEM";

@Override
public void onReceive(Context context, Intent intent) {
    AppWidgetManager mgr = AppWidgetManager.getInstance(context);

    if (intent.getAction().equals(TOAST_ACTION)) {
        int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

        Intent goToDetails = new Intent(context, DetailsActivity.class);
        goToDetails.putExtra(Constants.MERCHANT_ID, intent.getStringExtra(MERCHANT_ITEM) );

        goToDetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(goToDetails);

      super.onReceive(context, intent);

    }

Y así es como obtengo la identificación en miDetailsActivity

 public class DetailsActivity extends Activity {

 String merchantID;

 @Override
protected void onCreate(Bundle savedState) {

 super.onCreate(savedState);
    setContentView(R.layout.detailsactivity);

  Bundle extras = getIntent().getExtras();
    if (extras != n,ull) {
        merchantID = extras.getString(Constants.MERCHANT_ID);
    }

¿Cómo resolver esto? Gracias de antemano.