I'm trying to set up a widget containing two buttons. Clicking on the widget should raise the main activity. Clicking on one of the two buttons should do another actions.
I've tried following the steps described on Android widget button and Processing more than one button click at Android Widget but no dice. I don't know what I'm doing wrong.
The relevant part of my Manifest:
<receiver android:name="WidgetProvider" android:icon="@drawable/icon" android:label="Radio Podcastellano">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="es.radiopodcastellano.player.WidgetProvider.ACTION_UPDATEINFO"/>
<action android:name="es.radiopodcastellano.player.WidgetProvider.ACTION_REFRESH"/>
<action android:name="es.radiopodcastellano.player.WidgetProvider.ACTION_PLAYPAUSE"/>
<action android:name="es.radiopodcastellano.player.WidgetProvider.ACTION_SHOWMAIN" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" />
</receiver>
Now, the WidgetProvider class itself:
public class WidgetProvider extends AppWidgetProvider {
public static String ACTION_PLAYPAUSE="ActionReveicerPlayPause";
public static String ACTION_UPDATEINFO="ActionReceiverUpdateInfo";
public static String ACTION_REFRESH="ActionReceiverRefresh";
public static String ACTION_SHOWMAIN="ActionShowMain";
@Override
public void onReceive(Context ctxt, Intent intent) {
if (intent.getAction().equals(ACTION_REFRESH)) {
Log.d("RPod_Widget", ACTION_REFRESH);
} else if (intent.getAction().equals(ACTION_UPDATEINFO)) {
Log.d("RPod_Widget", ACTION_UPDATEINFO);
} else if (intent.getAction().equals(ACTION_PLAYPAUSE)) {
Log.d("RPod_Widget", ACTION_PLAYPAUSE);
} else if (intent.getAction().equals(ACTION_SHOWMAIN)) {
Log.d("RPod_Widget", ACTION_SHOWMAIN);
} else {
Log.d("RPod_Widget", intent.getAction());
super.onReceive(ctxt, intent);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.d("RPod_Widget","Action: onUpdate");
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent active = new Intent(context, MainActivity.class);
active.setAction(ACTION_SHOWMAIN);
PendingIntent actionPendingIntent = PendingIntent.getActivity(context, 234, active, 0);
remoteViews.setOnClickPendingIntent(R.id.widgetLayout, actionPendingIntent);
Intent active2 = new Intent(context, AppWidgetProvider.class);
active2.setAction(ACTION_PLAYPAUSE);
PendingIntent actionPendingIntent2 = PendingIntent.getBroadcast(context, 235, active2, 0);
remoteViews.setOnClickPendingIntent(R.id.widgetPlayButton, actionPendingIntent2);
Intent active3 = new Intent(context, AppWidgetProvider.class);
active3.setAction(ACTION_UPDATEINFO);
PendingIntent actionPendingIntent3 = PendingIntent.getBroadcast(context, 236, active3, 0);
remoteViews.setOnClickPendingIntent(R.id.widgetReloadButton, actionPendingIntent3);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}
The main activity gets raised when I click on the widget layout, but the buttons are completely ignored. I click on them but no effect. No messages from onReceive are being shown on Logcat, only this:
07-05 15:41:41.675: DEBUG/RPod_Widget(4144): Action: onUpdate
07-05 15:44:39.261: DEBUG/RPod_Widget(4198): android.appwidget.action.APPWIDGET_UPDATE
07-05 15:44:39.261: DEBUG/RPod_Widget(4198): Action: onUpdate
07-05 15:49:48.078: DEBUG/RPod_Widget(4285): android.appwidget.action.APPWIDGET_UPDATE
07-05 15:49:48.078: DEBUG/RPod_Widget(4285): Action: onUpdate
Some advice? Thank you!