| package com.android.launcher3; |
| |
| import static com.android.launcher3.LauncherPrefs.APP_WIDGET_IDS; |
| import static com.android.launcher3.LauncherPrefs.OLD_APP_WIDGET_IDS; |
| |
| import android.appwidget.AppWidgetManager; |
| import android.content.BroadcastReceiver; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.util.Log; |
| |
| import com.android.launcher3.logging.FileLog; |
| import com.android.launcher3.provider.RestoreDbTask; |
| import com.android.launcher3.util.IntArray; |
| import com.android.launcher3.widget.LauncherWidgetHolder; |
| |
| import java.util.Arrays; |
| |
| public class AppWidgetsRestoredReceiver extends BroadcastReceiver { |
| |
| private static final String TAG = "AppWidgetsRestoredReceiver"; |
| |
| @Override |
| public void onReceive(final Context context, Intent intent) { |
| if (AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED.equals(intent.getAction())) { |
| int hostId = intent.getIntExtra(AppWidgetManager.EXTRA_HOST_ID, 0); |
| Log.d(TAG, "onReceive: Widget ID map received for host:" + hostId); |
| if (hostId != LauncherWidgetHolder.APPWIDGET_HOST_ID) { |
| Log.w(TAG, "onReceive: hostId does not match Launcher." |
| + " Expected: " + LauncherWidgetHolder.APPWIDGET_HOST_ID |
| + ", Actual: " + hostId); |
| return; |
| } |
| |
| final int[] oldIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS); |
| final int[] newIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); |
| if (oldIds != null && newIds != null && oldIds.length == newIds.length) { |
| LauncherPrefs.get(context).putSync( |
| OLD_APP_WIDGET_IDS.to(IntArray.wrap(oldIds).toConcatString()), |
| APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString())); |
| FileLog.d(TAG, "onReceive: Valid Widget IDs received." |
| + " old IDs=" + Arrays.toString(oldIds) |
| + ", new IDs=" + Arrays.toString(newIds)); |
| if (!RestoreDbTask.isPending(context)) { |
| FileLog.w(TAG, "onReceive: Restored App Widget Ids received but Launcher" |
| + " restore is not pending. New widget Ids might not get restored."); |
| } |
| } else { |
| Log.e(TAG, "onReceive: Invalid widget ids received for Launcher" |
| + ", skipping restore of widget ids." |
| + " newIds=" + Arrays.toString(newIds) |
| + ", oldIds=" + Arrays.toString(oldIds)); |
| } |
| } |
| } |
| } |