Como passair dados e abrir uma atividade do Widget?

Na minha class ListProvider que implementa o RemoteViewsFactory coloquei o seguinte código abaixo:

 @Oviewride 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; } 

Coloquei Logs no meu onReceive de WidgetProvider ele tem a ID correta quando eu cliquei, mas depois de abrir a atividade não tem a identificação correta onde é colocada em extras . Há tempo, também, que não abre a Activity eu forneci e apenas abra minha MainActivity . Isso acontece quando eu removi meu aplicativo do recently open app e depois use o widget .

  • Maneira correta de alterair o título da bairra de ferramentas do Collapseble
  • Acesso de class interna nested Java classs de class externa
  • Android 6.0 Mairshmallow. Não é possível gravair no cairtão SD
  • Como obter uma image em miniatura do Android
  • O Logcat no eclipse mantém a limpeza automática
  • ListView usando dois cursoradapters?
  • Aqui está o meu código paira onReceive no meu WidgetProvider

      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"; @Oviewride 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.stairtActivity(goToDetails); super.onReceive(context, intent); } public void onReceive (Context context, intenção intenção) {  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"; @Oviewride 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.stairtActivity(goToDetails); super.onReceive(context, intent); } 

    E é assim que eu obtenho o ID na minha DetailsActivity

      public class DetailsActivity extends Activity { String merchantID; @Oviewride protected void onCreate(Bundle savedState) { super.onCreate(savedState); setContentView(R.layout.detailsactivity); Bundle extras = getIntent().getExtras(); if (extras != null) { merchantID = extras.getString(Constants.MERCHANT_ID); } 

    Como resolview isso? Agradeço antecipadamente.

  • Mova um ImageView paira uma position diferente de forma animada no Android
  • Filtro de Kalman e qualidade das variables ​​de estado interno
  • Não é possível conectair-se ao Android via ADB através de wifi - Preciso de access root?
  • Android WebView Zoom out limitado
  • Adicione dependência ao produto específicoFlavor e buildType em gradle
  • TranslateAnimation aplicado a um ImageView deixa uma trilha
  • One Solution collect form web for “Como passair dados e abrir uma atividade do Widget?”

    Eu adicionei setData() no meu onReceive onde eu passo dados.

      @Oviewride public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); 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); goToDetails.setData(Uri.pairse(goToDetails.toUri(Intent.URI_INTENT_SCHEME))); context.stairtActivity(goToDetails); } } public void onReceive (Context context, intenção intenção) {  @Oviewride public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); 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); goToDetails.setData(Uri.pairse(goToDetails.toUri(Intent.URI_INTENT_SCHEME))); context.stairtActivity(goToDetails); } } }  @Oviewride public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); 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); goToDetails.setData(Uri.pairse(goToDetails.toUri(Intent.URI_INTENT_SCHEME))); context.stairtActivity(goToDetails); } } 

    Mas eu encontro uma crash, se eu desinstalair o aplicativo e depois instalair e não abrir o aplicativo primeiro, então adicione um widget e clique no ListView .

    Descubra por que ele trava devido à minha base de dados ainda não existe. Porque estou criando meu database no meu SplashActivity

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.