Don't clobber widgets with the same component.
By not storing them in a HashMap keyed against ComponentName (which is
almost guaranteed to conflict with other widgets when managed profiles
are in play).
Bug: 19444068
Change-Id: I6ffce78e8aaf265196239670404cbdaff9fa09be
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index 7849e53..57f92bc 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -668,7 +668,10 @@
previewLoader.setPreviewSize(
spanX * profile.cellWidthPx,
spanY * profile.cellHeightPx);
- writeRowToBackup(key, packWidget(dpi, previewLoader, mIconCache, provider), data);
+ UserHandleCompat user = UserHandleCompat.myUserHandle();
+ writeRowToBackup(key,
+ packWidget(dpi, previewLoader, mIconCache, provider, user),
+ data);
mKeys.add(key);
backupWidgetCount ++;
} else {
@@ -978,9 +981,9 @@
/** Serialize a widget for persistence, including a checksum wrapper. */
private Widget packWidget(int dpi, WidgetPreviewLoader previewLoader, IconCache iconCache,
- ComponentName provider) {
+ ComponentName provider, UserHandleCompat user) {
final LauncherAppWidgetProviderInfo info =
- LauncherModel.getProviderInfo(mContext, provider);
+ LauncherModel.getProviderInfo(mContext, provider, user);
Widget widget = new Widget();
widget.provider = provider.flattenToShortString();
widget.label = info.label;