From 0d86a8dccf6557587eb3abae1bb3573e2c40c12c Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 16 May 2016 11:57:45 -0700 Subject: [PATCH] On some "non-standard" devices, load label can cause a security exception due to modified platform code Bug: 28243147 Change-Id: Iab899d0cb233e19ebf994f8a3eacba26f840148f --- .../launcher3/compat/LauncherActivityInfoCompatV16.java | 8 +++++++- .../launcher3/model/WidgetsAndShortcutNameComparator.java | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java b/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java index fee0376bd..15c5e69dd 100644 --- a/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java +++ b/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java @@ -26,6 +26,7 @@ import android.content.pm.PackageInfo; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; +import android.util.Log; public class LauncherActivityInfoCompatV16 extends LauncherActivityInfoCompat { @@ -51,7 +52,12 @@ public class LauncherActivityInfoCompatV16 extends LauncherActivityInfoCompat { } public CharSequence getLabel() { - return mResolveInfo.loadLabel(mPm); + try { + return mResolveInfo.loadLabel(mPm); + } catch (SecurityException e) { + Log.e("LAInfoCompat", "Failed to extract app display name from resolve info", e); + return ""; + } } public Drawable getIcon(int density) { diff --git a/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java b/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java index b99056023..2e4167e12 100644 --- a/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java +++ b/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java @@ -4,6 +4,8 @@ import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.util.Log; + import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.Utilities; import com.android.launcher3.compat.AppWidgetManagerCompat; @@ -91,7 +93,13 @@ public class WidgetsAndShortcutNameComparator implements Comparator { return Utilities.trim(mManager.loadLabel(widgetInfo)); } else { ResolveInfo shortcutInfo = (ResolveInfo) o; - return Utilities.trim(shortcutInfo.loadLabel(mPackageManager)); + try { + return Utilities.trim(shortcutInfo.loadLabel(mPackageManager)); + } catch (Exception e) { + Log.e("ShortcutNameComparator", + "Failed to extract app display name from resolve info", e); + return ""; + } } } }; -- 2.11.0