28

I have created widget in android and it successfully works, but now I want to use on click event of widget so that I can open new activity from that.

Help me

Nikki
  • 3,314
  • 13
  • 36
  • 59
Ramesh Solanki
  • 373
  • 1
  • 5
  • 15

2 Answers2

43
 @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                     int[] appWidgetIds) {
    for (int i = 0; i < appWidgetIds.length; i++) {
        int appWidgetId = appWidgetIds[i];

        Intent intent = new Intent(context, TaskManagerActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

In widget.xml I have root element LinearLayout with id widget_layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/widget_layout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:paddingTop="10dip"
          android:paddingLeft="10dip"
          android:orientation="vertical">
xtem
  • 471
  • 4
  • 3
  • 1
    Hi @xtem, I am facing problem in detecting widget id. I created 3 widgets on my home screen and I want to change each one's theme separately. So when I do click on widget my Configuration class is opened and onUpdate() each my widgets updated. Can I do it separately? – Rahul Upadhyay Dec 07 '12 at 08:55
  • Using `0` for the requestCode might get you in trouble: https://stackoverflow.com/a/16800592/5027971 – David Riha Apr 20 '19 at 12:18
9

I used this:

// Create an Intent to launch ExampleActivity
        Intent intent = new Intent(context, Mainpage.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
        remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);
Tobias
  • 7,282
  • 6
  • 63
  • 85