A solution (or rather a workaround) was found.
I am posting this for future reference:

It was simpler than I thought, but it didn't occur to me or my friend
with whom I am developing this widget, until he recently came up with
this simple solution.

It consists in having the different flags selected by the users in the
configuration activity appended as strings to the intent action.

That way, if you want some instances of your widget to behave by
outputting sound and others not, setup different action strings
accordingly.
(for example, "action_button1_sound" if the button should output
sound, and "action_button1_nosound" for the opposite behavior.

If you have more than one flag you can set in your configuration
activity, as it is in our case, you'll have to manifest all possible
combinations in your intent-filters. You don't have to parse the
intent action string, though, as that is only needed so the intents do
not overwrite each other.
Therefore, you can now read the arguments passed through the extras
and make the buttons behave accordingly.

If someone finds a nicer solution I will be happy to hear about it!

thanks!

On Oct 5, 10:08 pm, Pablo <pablo.llo...@gmail.com> wrote:
> I am developing a simple widget which has a couple of buttons in its
> layout.
>
> Before the widget gets added, the configuration activity is displayed,
> where the user can choose if the widget makes any sounds when the
> buttons get pressed or not.
>
> Thus, a user can put two instances of the widget, one where he chose
> sound to be activated and another where he chose the opposite.
> However, I can not seem to be able to reproduce the expected behavior
> (that one reproduces sound and the other doesn't).
>
> The buttons' behavior varies according to the flags specified to the
> PendingIntent:
>
> - FLAG_UPDATE_CURRENT seems to override the previous intent/setting
> - no flags (0x00) seems to ignore any intent/setting after the first
> instance of the widget is put.
>
> What I want to do: I want to be able to configure different instances
> of the same widget to behave in a different way, according to what the
> user specified in the configuration activity. I am attempting to do
> this with the help of the appWidgetId of each instance:
>
> I have tried the following when assigning an action to the click of
> the button:
>
>                         int mAppWidgetId=appWidgetIds[i];
>                         Intent intent1=new Intent();
>                         
> intent1.setAction("com.spartancoders.intenttest.TEST");
>                         Log.d("TEST ONUPDATE",""+mAppWidgetId);
>                         intent1.putExtra("id", mAppWidgetId);
>                         PendingIntent pi1 = 
> PendingIntent.getBroadcast(context,
> 0,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
>
> And in the onReceive() method:
>
>                 Bundle extras = arg1.getExtras();
>                 if (arg1!=null){
>                         Log.d("TEST ONRECEIVE",""+extras.getInt("id"));
>                 }
>
> This results in the first widget acting properly (The IDs printed in
> logcat are as expected)
> When adding a second widget, however, the first widget starts
> reporting the second widget's appWidgetId in its onReceive(), when it
> previously did no such thing.
> (because of the FLAG_UPDATE_CURRENT, I guess)
>
> How can one make different instances behave in a different way?
> Is there a way to do this with the help of the appWidgetId?
>
> I have elaborated a widget application for the purpose of debugging
> this problem which tries to be minimal, while reproducing the (un)
> desired behavior:
>
> http://www.2shared.com/file/8243059/b6519584/IntentTesttar.html
>
> Any help is appreciated, thanks!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to