package org.kvj.bravo7.widget; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.appwidget.AppWidgetProviderInfo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class WidgetUpdateReceiver extends BroadcastReceiver { public static final String WIDGET_ID = "id"; public static final String INTENT_SUFFIX = ".UPDATE_WIDGET"; private static final String TAG = "WidgetUpdateReceiver"; public static PendingIntent createUpdateIntent(Context ctx, int widgetID) { Intent intent = new Intent(ctx.getPackageName() + INTENT_SUFFIX); intent.putExtra(WIDGET_ID, widgetID); return PendingIntent.getBroadcast(ctx, widgetID, intent, PendingIntent.FLAG_UPDATE_CURRENT); } @Override public void onReceive(Context ctx, Intent intent) { try { // Convert errors int widgetID = intent.getIntExtra(WIDGET_ID, -1); AppWidgetManager manager = AppWidgetManager.getInstance(ctx); AppWidgetProviderInfo info = manager.getAppWidgetInfo(widgetID); if (info == null) { Log.w(TAG, "updateWidgets no info for " + widgetID); return; } AppWidgetProvider provider = (AppWidgetProvider) getClass() .getClassLoader().loadClass(info.provider.getClassName()) .newInstance(); // Log.i(TAG, "updateWidgets calling update..."); provider.onUpdate(ctx, manager, new int[] { widgetID }); Toast.makeText(ctx, "Widget updated", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Log.e(TAG, "Error updating widget", e); } } }