From 2f79bddedb7c30b76641432ad63217eba35efeef Mon Sep 17 00:00:00 2001 From: Wen Zhang Date: Tue, 27 Dec 2022 12:02:32 +0000 Subject: [PATCH] [Bugfix]create different pendingintent via appwidgetId avoid get wrong intent extra when start suspended app's widget Bug: 263768644 Change-Id: I06ba867c06429a5c58ec573458edcbf8654b7ad9 Test: Build --- .../server/appwidget/AppWidgetServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 4430bb4b32920..308f36029e027 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -579,12 +579,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } - if (onClickIntent != null) { - views.setOnClickPendingIntent(android.R.id.background, - PendingIntent.getActivity(mContext, 0, onClickIntent, - PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)); - } - Icon icon = appInfo.icon != 0 ? Icon.createWithResource(appInfo.packageName, appInfo.icon) : Icon.createWithResource(mContext, android.R.drawable.sym_def_app_icon); @@ -596,6 +590,12 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku for (int j = 0; j < widgetCount; j++) { Widget widget = provider.widgets.get(j); if (targetWidget != null && targetWidget != widget) continue; + if (onClickIntent != null) { + views.setOnClickPendingIntent(android.R.id.background, + PendingIntent.getActivity(mContext, widget.appWidgetId, onClickIntent, + PendingIntent.FLAG_UPDATE_CURRENT + | PendingIntent.FLAG_IMMUTABLE)); + } if (widget.replaceWithMaskedViewsLocked(views)) { scheduleNotifyUpdateAppWidgetLocked(widget, widget.getEffectiveViewsLocked()); }