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
-~----------~----~----~----~------~----~------~--~---

Reply via email to