First, remember that PendingIntents may not be unique w.r.t extra
bundles, which is why you want to use the setData() Uri.

In the Activity or Service that you trigger with the PendingIntent,
you can use getIntent().getData() to read back the Uri used to launch
it, which includes any data you set when building the widget update.

Here's an example where I used the setData() approach to sharing the
appWidgetId.  When opening the forecast details page, you need to know
the source widget the user clicked on:

http://code.google.com/p/android-sky/source/browse/trunk/Sky/src/org/jsharkey/sky/MedAppWidget.java#166

http://code.google.com/p/android-sky/source/browse/trunk/Sky/src/org/jsharkey/sky/DetailsActivity.java#98

j

On Thu, May 7, 2009 at 2:58 AM, Carlos <[email protected]> wrote:
>
> Ok.
> But how to find the id to join it in the intent?
>
>
> When i update my widget, i do :
> updateViews.setOnClickPendingIntent(R.id.widget, pendingIntent);
> the pendingintent has an extra value with the widget id. How to get
> the widget id?
>
> Charles
>
>
>
>
> On May 7, 12:25 am, Jeff Sharkey <[email protected]> wrote:
>> When building the widget update, you can pack the appWidgetId into the
>> PendingIntent.  Through the setData() Uri usually works best.
>>
>> j
>>
>>
>>
>> On Wed, May 6, 2009 at 12:18 PM, Carlos <[email protected]> wrote:
>>
>> > Hello,
>>
>> > I have a widget like the jeff's example.
>> > And i don't understand how to identify each widget (same type).
>> > getAppWidgetIds() returns a tab, how to catch the good id when i touch
>> > mywidget 1 or mywidget 2?
>> > Do you know a solution?
>>
>> > Charles
>>
>> > On Apr 23, 12:05 am, Al <[email protected]> wrote:
>> >> That worked, thanks.
>>
>> >> On Apr 22, 7:36 pm, Tom Gibara <[email protected]> wrote:
>>
>> >> > That's true, but notice that his service has no dependency on the class
>> >> > implementing the onUpdate method, in principal anything in the 
>> >> > application
>> >> > could invoke that service. You'll find the appwidgetids available via 
>> >> > the
>> >> > getAppWidgetIds() on AppWidgetManager.
>> >> > Tom.
>>
>> >> > 2009/4/22 Al <[email protected]>
>>
>> >> > > In Jeff's example, the service is started from his onUpdate method,
>> >> > > which is called by AppWidgetProvider. This is different from what I'd
>> >> > > like to do, I'd like to push an update to thewidgetfrom inside my
>> >> > > activity, but with the correct int[] values.
>>
>> >> > > On Apr 22, 7:16 pm, Tom Gibara <[email protected]> wrote:
>> >> > > > Yes, you can push updates to your widgets any time by obtaining an
>> >> > > > AppWidgetManager.
>> >> > > > Jeff Sharkey posted an example that performs an update within a 
>> >> > > > Service.
>> >> > > It
>> >> > > > includes this code that might help.
>>
>> >> > > >             // Push update for thiswidgetto the home screen
>> >> > > >             ComponentName thisWidget = new ComponentName(this,
>> >> > > > WordWidget.class);
>> >> > > >             AppWidgetManager manager =
>> >> > > AppWidgetManager.getInstance(this);
>> >> > > >             manager.updateAppWidget(thisWidget, updateViews);
>>
>> >> > > > The relevant methods you are looking for are on the AppWidgetManager
>> >> > > class.
>> >> > > > In this case everywidgetis being updated in the same way so this 
>> >> > > > code
>> >> > > > takes advantage of the updateAppWidget method (which doesn't take an
>> >> > > array
>> >> > > > of ids, but updates allwidgetinstances identically).
>>
>> >> > > > Jeff's blog post is at:
>>
>> >> > > >http://android-developers.blogspot.com/2009/04/introducing-home-scree...
>>
>> >> > > > Tom.
>>
>> >> > > > 2009/4/22 Al <[email protected]>
>>
>> >> > > > > Depending on what I do in my application, I might want to force an
>> >> > > > > update on mywidget. I've have had a poke around and can't seem to
>> >> > > > > find any API for doing a manual update. At the moment, I have a
>> >> > > > > function that sends a broadcast and my onReceive does this:
>>
>> >> > > > >       �...@override
>> >> > > > >        public void onReceive(Context context, Intent intent) {
>>
>> >> > > > >                String action = intent.getAction();
>>
>> >> > > > >                if (action != null && 
>> >> > > > > action.equals(UPDATE_ACTION)) {
>> >> > > > > //internal
>> >> > > > > static string
>> >> > > > >                        onUpdate(context,
>> >> > > > > AppWidgetManager.getInstance(context), new int[]
>> >> > > > > { 0 });
>> >> > > > >                }
>>
>> >> > > > >                else {
>> >> > > > >                        super.onReceive(context, intent);
>> >> > > > >                }
>> >> > > > >        }
>>
>> >> > > > > Is there a proper way to do this, which sents the int array to the
>> >> > > > > correct values? Or do I have to do it like this instead?
>>
>> --
>> Jeff Sharkey
>> [email protected]
> >
>



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