Fixing legacy shortcuts which only specify packageName in the intent
dont get restored on apk install.
For various model update task, we only use targetComponent (unlike loader
where we all check packageName for legacy shortcuts).
This causes various shortcuts which only specity packageName in the intent
to get skipped during the check. Instead creating a pseudo component for
these shortcuts similar to IconCache
Bug: 62944669
Change-Id: I0aa0a4c15ef3ad88dc6cdd579a76315fb2ff780b
diff --git a/src/com/android/launcher3/ItemInfo.java b/src/com/android/launcher3/ItemInfo.java
index 11c5309..c5be096 100644
--- a/src/com/android/launcher3/ItemInfo.java
+++ b/src/com/android/launcher3/ItemInfo.java
@@ -137,7 +137,18 @@
}
public ComponentName getTargetComponent() {
- return getIntent() == null ? null : getIntent().getComponent();
+ Intent intent = getIntent();
+ if (intent == null) {
+ return null;
+ }
+ ComponentName cn = intent.getComponent();
+ if (itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT && cn == null) {
+ // Legacy shortcuts may not have a componentName but just a packageName. In that case
+ // create a dummy componentName instead of adding additional check everywhere.
+ String pkg = intent.getPackage();
+ return pkg == null ? null : new ComponentName(pkg, IconCache.EMPTY_CLASS_NAME);
+ }
+ return cn;
}
public void writeToValues(ContentWriter writer) {