Right, you can't pass the appWidgetId through a PendingIntent extra reliably. You could pass it through the setData() Uri, and have the configuration activity watch for both.
j On Mon, Jun 15, 2009 at 2:18 AM, BoD<[email protected]> wrote: > > Replying to my own post for future reference. > > This is due to the way PendingIntents work and are automatically > reused. > Quoting the PendingIntent Javadoc: > "If the creating application later re-retrieves the same kind of > PendingIntent (same operation, same Intent action, data, categories, > and components, and same flags), it will receive a PendingIntent > representing the same token if that is still valid, and can thus call > cancel() to remove it." > > BoD > > > > On Jun 14, 9:19 pm, BoD <[email protected]> wrote: >> Hi! >> >> I'm making a little AppWidget that should be configured when you first >> add it and also when you click on it. >> >> I figured, since clicking on it should do the same as the "creation" >> event, why not try to use the same code? >> >> My configuration Activity should not know or care, whether it was >> called for a creation event or an "already exists, wants to be >> configured" event. >> >> So I extend AppWidgetProvider, create a RemoteViews for my AppWidget >> and do this in onUpdate(): >> >> Intent intent = new Intent(context, >> ConfigureActivity.class); >> intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); >> intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, >> appWidgetId); >> >> PendingIntent pendingIntent = PendingIntent.getActivity >> (context, 0, intent, 0); >> >> views.setOnClickPendingIntent(R.id.buttonImage, >> pendingIntent); >> >> For some reason it's not working as I'd like: >> in my ConfigureActivity when I look at getIntent().getExtras >> ().extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID), it returns >> always the same id: the first one that was configured. >> >> Now the strange part: >> if in the code above I add this line: >> >> intent.setData(ContentUris.withAppendedId(Uri.EMPTY, >> appWidgetId)); >> >> then it works correctly and in my ConfigureActivity getIntent >> ().getExtras().extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) >> returns the correct id, the id of the widget I clicked on. >> >> Surely there is an explanation but I don't see it. >> Please help! :) >> >> Thanks a lot! >> >> BoD > > > -- Jeff Sharkey [email protected] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

