From b2cc8e25c08affd67cddc5133d7fac70296ac008 Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Wed, 13 Apr 2016 17:21:07 +0100 Subject: [PATCH] Fix widget not being masked when freshly added. Bug: 26721345 Change-Id: I6bc7142c6f488b8666651330039abac27782bda9 --- .../appwidget/AppWidgetServiceImpl.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 6ca3af8219daf..0428ecfeb779f 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -613,23 +613,22 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); } } + for (int j = 0; j < widgetCount; j++) { + Widget widget = provider.widgets.get(j); + if (targetWidget != null && targetWidget != widget) continue; + PendingIntent intent = null; + if (onClickIntent != null) { + intent = PendingIntent.getActivity(mContext, widget.appWidgetId, + onClickIntent, PendingIntent.FLAG_UPDATE_CURRENT); + } + RemoteViews views = createMaskedWidgetRemoteViews(iconBitmap, showBadge, intent); + if (widget.replaceWithMaskedViewsLocked(views)) { + scheduleNotifyUpdateAppWidgetLocked(widget, widget.getEffectiveViewsLocked()); + } + } } finally { Binder.restoreCallingIdentity(identity); } - - for (int j = 0; j < widgetCount; j++) { - Widget widget = provider.widgets.get(j); - if (targetWidget != null && targetWidget != widget) continue; - PendingIntent intent = null; - if (onClickIntent != null) { - intent = PendingIntent.getActivity(mContext, widget.appWidgetId, - onClickIntent, PendingIntent.FLAG_UPDATE_CURRENT); - } - RemoteViews views = createMaskedWidgetRemoteViews(iconBitmap, showBadge, intent); - if (widget.replaceWithMaskedViewsLocked(views)) { - scheduleNotifyUpdateAppWidgetLocked(widget, widget.getEffectiveViewsLocked()); - } - } } private void unmaskWidgetsViewsLocked(Provider provider) { @@ -1062,8 +1061,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku widget.provider = provider; widget.options = (options != null) ? cloneIfLocalBinder(options) : new Bundle(); - onWidgetProviderAddedOrChangedLocked(widget); - // We need to provide a default value for the widget category if it is not specified if (!widget.options.containsKey(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY)) { widget.options.putInt(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY, @@ -1072,6 +1069,8 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku provider.widgets.add(widget); + onWidgetProviderAddedOrChangedLocked(widget); + final int widgetCount = provider.widgets.size(); if (widgetCount == 1) { // Tell the provider that it's ready.