work around bug in LauncherAppsCompat to find restored icons

Bug: 14895464
Change-Id: Iff4f1a9a2e8edf789231be7a1c20e277e18eb05c
diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java
index 05be214..4d953ff 100644
--- a/src/com/android/launcher3/IconCache.java
+++ b/src/com/android/launcher3/IconCache.java
@@ -249,11 +249,20 @@
 
     public Bitmap getIcon(Intent intent, String title, UserHandleCompat user) {
         synchronized (mCache) {
-            final LauncherActivityInfoCompat launcherActInfo =
+            LauncherActivityInfoCompat launcherActInfo =
                     mLauncherApps.resolveActivity(intent, user);
             ComponentName component = intent.getComponent();
 
-            if (launcherActInfo == null || component == null) {
+            try {
+                launcherActInfo.getComponentName();
+            } catch (NullPointerException e) {
+                // launcherActInfo is invalid: b/14891460
+                launcherActInfo = null;
+            }
+
+            // null info means not installed, but if we have a component from the intent then
+            // we should still look in the cache for restored app icons.
+            if (launcherActInfo == null && component == null) {
                 return getDefaultIcon(user);
             }