Search code examples
androidandroid-activityandroid-widget

Programmatically update widget from activity/service/receiver


I know it's possible, but I can't figure out a way to trigger an update of my widget from the main activity. Isn't there some general intent I can broadcast?


Solution

  • If you are using an AppWidgetProvider, you can update it this way:

    Intent intent = new Intent(this, MyAppWidgetProvider.class);
    intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
    // Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
    // since it seems the onUpdate() is only fired on that:
     int[] ids = AppWidgetManager.getInstance(getApplication())
        .getAppWidgetI‌​ds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
    sendBroadcast(intent);