package org.wikipedia.widgets; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.RemoteViews; import org.wikipedia.Constants; import org.wikipedia.R; import org.wikipedia.main.MainActivity; public class WidgetProviderSearch extends AppWidgetProvider { private static final String TAG = "WidgetSearch"; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { ComponentName thisWidget = new ComponentName(context, WidgetProviderSearch.class); int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); for (int widgetId : allWidgetIds) { Log.d(TAG, "updating widget..."); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_search); // Create a PendingIntent to act as the onClickListener Intent intent = new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Constants.INTENT_SEARCH_FROM_WIDGET, true); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // If we want to update the widget itself from the click event, then do something like this: //Intent intent = new Intent(context, WidgetProviderSearch.class); //intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); //intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); //PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.widget_container, pendingIntent); appWidgetManager.updateAppWidget(widgetId, remoteViews); } } }