From 363f555f9cc6e7093778935a0511f33097dc384c Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Wed, 27 Feb 2013 17:19:17 -0800 Subject: [PATCH] add onEnabled to reinitialize the widget after reboot --- .../mytracks/widgets/TrackWidgetProvider.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java index 16cbc0e64..03820f593 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java @@ -82,15 +82,30 @@ public class TrackWidgetProvider extends AppWidgetProvider { || context.getString(R.string.track_stopped_broadcast_action).equals(action) || context.getString(R.string.track_update_broadcast_action).equals(action)) { long trackId = intent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L); - AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); - int[] appWidgetIds = appWidgetManager.getAppWidgetIds( - new ComponentName(context, TrackWidgetProvider.class)); - for (int appWidgetId : appWidgetIds) { - int size = ApiAdapterFactory.getApiAdapter() - .getAppWidgetSize(appWidgetManager, appWidgetId); - RemoteViews remoteViews = getRemoteViews(context, trackId, size); - appWidgetManager.updateAppWidget(appWidgetId, remoteViews); - } + updateAllWidgets(context, trackId); + } + } + + @Override + public void onEnabled(Context context) { + // Need to update all widgets after phone reboot + updateAllWidgets(context, -1L); + } + + /** + * Updates all widgets. + * + * @param context the context + * @param trackId track id + */ + private void updateAllWidgets(Context context, long trackId) { + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + int[] appWidgetIds = appWidgetManager.getAppWidgetIds( + new ComponentName(context, TrackWidgetProvider.class)); + for (int appWidgetId : appWidgetIds) { + int size = ApiAdapterFactory.getApiAdapter().getAppWidgetSize(appWidgetManager, appWidgetId); + RemoteViews remoteViews = getRemoteViews(context, trackId, size); + appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } }