1 package com.android.launcher3; 2 3 import static com.android.launcher3.LauncherPrefs.APP_WIDGET_IDS; 4 import static com.android.launcher3.LauncherPrefs.OLD_APP_WIDGET_IDS; 5 6 import android.appwidget.AppWidgetManager; 7 import android.content.BroadcastReceiver; 8 import android.content.Context; 9 import android.content.Intent; 10 import android.util.Log; 11 12 import com.android.launcher3.logging.FileLog; 13 import com.android.launcher3.provider.RestoreDbTask; 14 import com.android.launcher3.util.IntArray; 15 import com.android.launcher3.widget.LauncherWidgetHolder; 16 17 import java.util.Arrays; 18 19 public class AppWidgetsRestoredReceiver extends BroadcastReceiver { 20 21 private static final String TAG = "AppWidgetsRestoredReceiver"; 22 23 @Override onReceive(final Context context, Intent intent)24 public void onReceive(final Context context, Intent intent) { 25 if (AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED.equals(intent.getAction())) { 26 int hostId = intent.getIntExtra(AppWidgetManager.EXTRA_HOST_ID, 0); 27 Log.d(TAG, "onReceive: Widget ID map received for host:" + hostId); 28 if (hostId != LauncherWidgetHolder.APPWIDGET_HOST_ID) { 29 Log.w(TAG, "onReceive: hostId does not match Launcher." 30 + " Expected: " + LauncherWidgetHolder.APPWIDGET_HOST_ID 31 + ", Actual: " + hostId); 32 return; 33 } 34 35 final int[] oldIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS); 36 final int[] newIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); 37 if (oldIds != null && newIds != null && oldIds.length == newIds.length) { 38 LauncherPrefs.get(context).putSync( 39 OLD_APP_WIDGET_IDS.to(IntArray.wrap(oldIds).toConcatString()), 40 APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString())); 41 FileLog.d(TAG, "onReceive: Valid Widget IDs received." 42 + " old IDs=" + Arrays.toString(oldIds) 43 + ", new IDs=" + Arrays.toString(newIds)); 44 if (!RestoreDbTask.isPending(context)) { 45 FileLog.w(TAG, "onReceive: Restored App Widget Ids received but Launcher" 46 + " restore is not pending. New widget Ids might not get restored."); 47 } 48 } else { 49 Log.e(TAG, "onReceive: Invalid widget ids received for Launcher" 50 + ", skipping restore of widget ids." 51 + " newIds=" + Arrays.toString(newIds) 52 + ", oldIds=" + Arrays.toString(oldIds)); 53 } 54 } 55 } 56 }