Loading src/com/android/launcher3/Launcher.java +23 −3 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.model.ItemInstallQueue; import com.android.launcher3.model.ModelUtils; import com.android.launcher3.model.ModelWriter; import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; Loading Loading @@ -2329,24 +2330,43 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche try { final LauncherAppWidgetProviderInfo appWidgetInfo; String reason = ""; if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)) { // If the provider is not ready, bind as a pending widget. appWidgetInfo = null; reason = "the provider not ready."; } else if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)) { // The widget id is not valid. Try to find the widget based on the provider info. appWidgetInfo = mAppWidgetManager.findProvider(item.providerName, item.user); if (appWidgetInfo == null) { if (WidgetsModel.GO_DISABLE_WIDGETS) { reason = "widgets are disabled on go device."; } else { reason = "WidgetManagerHelper cannot find a provider from provider info."; } } } else { appWidgetInfo = mAppWidgetManager.getLauncherAppWidgetInfo(item.appWidgetId); if (appWidgetInfo == null) { if (item.appWidgetId <= LauncherAppWidgetInfo.CUSTOM_WIDGET_ID) { reason = "CustomWidgetManager cannot find provider from that widget id ."; } else { reason = "AppWidgetManager cannot find provider for that widget id." + " It could be due to AppWidgetService is not available, or the" + " appWidgetId has not been bound to a the provider yet, or you" + " don't have access to that appWidgetId."; } } } // If the provider is ready, but the width is not yet restored, try to restore it. if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) && (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) { if (appWidgetInfo == null) { Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + ", as the provider is null"); FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + " user " + item.user + ", as the provider is null and " + reason); getModelWriter().deleteItemFromDatabase(item); return null; } Loading Loading
src/com/android/launcher3/Launcher.java +23 −3 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.model.ItemInstallQueue; import com.android.launcher3.model.ModelUtils; import com.android.launcher3.model.ModelWriter; import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; Loading Loading @@ -2329,24 +2330,43 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche try { final LauncherAppWidgetProviderInfo appWidgetInfo; String reason = ""; if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)) { // If the provider is not ready, bind as a pending widget. appWidgetInfo = null; reason = "the provider not ready."; } else if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)) { // The widget id is not valid. Try to find the widget based on the provider info. appWidgetInfo = mAppWidgetManager.findProvider(item.providerName, item.user); if (appWidgetInfo == null) { if (WidgetsModel.GO_DISABLE_WIDGETS) { reason = "widgets are disabled on go device."; } else { reason = "WidgetManagerHelper cannot find a provider from provider info."; } } } else { appWidgetInfo = mAppWidgetManager.getLauncherAppWidgetInfo(item.appWidgetId); if (appWidgetInfo == null) { if (item.appWidgetId <= LauncherAppWidgetInfo.CUSTOM_WIDGET_ID) { reason = "CustomWidgetManager cannot find provider from that widget id ."; } else { reason = "AppWidgetManager cannot find provider for that widget id." + " It could be due to AppWidgetService is not available, or the" + " appWidgetId has not been bound to a the provider yet, or you" + " don't have access to that appWidgetId."; } } } // If the provider is ready, but the width is not yet restored, try to restore it. if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) && (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) { if (appWidgetInfo == null) { Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + ", as the provider is null"); FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + " user " + item.user + ", as the provider is null and " + reason); getModelWriter().deleteItemFromDatabase(item); return null; } Loading