Skip to content Skip to sidebar Skip to footer

How To Manually Call `onupdate` From Within The Widget Itself

public class VWid extends AppWidgetProvider { public static String WIDGET_UPDATE = 'WIDGET_UPDATE'; @Override public void onReceive(Context context, Intent intent) {

Solution 1:

Try this:

publicclassWidgetProviderextendsAppWidgetProvider {

 publicstaticfinalStringREFRESH_ACTION="com.packagename.REFRESH_ACTION";

@OverridepublicvoidonReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

   if (intent.getAction().equals(WidgetProvider.REFRESH_ACTION)) {
        Bundleextras= intent.getExtras();
        if (extras != null) {
            int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);

            if (appWidgetIds != null && appWidgetIds.length > 0) {
                Toast.makeText(context, "REFRESH", Toast.LENGTH_SHORT).show();
                this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
            }
        }
    }

}


@OverridepublicvoidonUpdate(final Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    finalintN= appWidgetIds.length;


    for (inti=0; i < N; ++i) {

        RemoteViewsrv=newRemoteViews(context.getPackageName(), R.layout.widget_layout);

        IntentintentServiceCall=newIntent(context, WidgetService.class);
        intentServiceCall.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);

     //RefreshIntentrefreshIntent=newIntent(context, WidgetProvider.class);
        refreshIntent.setAction(WidgetProvider.REFRESH_ACTION);
        refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
        intentServiceCall.setData(Uri.parse(intentServiceCall.toUri(Intent.URI_INTENT_SCHEME)));
        PendingIntentpendingIntent= PendingIntent.getBroadcast(context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        rv.setOnClickPendingIntent(R.id.ivRefreshWidget, pendingIntent);

  appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}

Solution 2:

Change this section :

Intent imageview2Intent= newIntent(context, VWid.class);
imageview2Intent.setAction(WIDGET_UPDATE);
PendingIntent pendingIntent2= PendingIntent.getBroadcast(context,0, imageview2Intent,0);
views.setOnClickPendingIntent(R.id.imagebuttonrefresh, pendingIntent2); //@OverridepublicvoidonReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    if (WIDGET_UPDATE.equals(intent.getAction())) {
         pushWidgetUpdate(context);
    }
}

Post a Comment for "How To Manually Call `onupdate` From Within The Widget Itself"