diff --git a/core/java/com/android/internal/app/AbstractResolverComparator.java b/core/java/com/android/internal/app/AbstractResolverComparator.java index 40ada0b2ffdcc..c00d16ca143e6 100644 --- a/core/java/com/android/internal/app/AbstractResolverComparator.java +++ b/core/java/com/android/internal/app/AbstractResolverComparator.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.os.BadParcelableException; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -109,17 +110,22 @@ public abstract class AbstractResolverComparator implements Comparator annotations = intent.getStringArrayListExtra( - Intent.EXTRA_CONTENT_ANNOTATIONS); - if (annotations != null) { - int size = annotations.size(); - if (size > NUM_OF_TOP_ANNOTATIONS_TO_USE) { - size = NUM_OF_TOP_ANNOTATIONS_TO_USE; - } - mAnnotations = new String[size]; - for (int i = 0; i < size; i++) { - mAnnotations[i] = annotations.get(i); + try { + ArrayList annotations = intent.getStringArrayListExtra( + Intent.EXTRA_CONTENT_ANNOTATIONS); + if (annotations != null) { + int size = annotations.size(); + if (size > NUM_OF_TOP_ANNOTATIONS_TO_USE) { + size = NUM_OF_TOP_ANNOTATIONS_TO_USE; + } + mAnnotations = new String[size]; + for (int i = 0; i < size; i++) { + mAnnotations[i] = annotations.get(i); + } } + } catch (BadParcelableException e) { + Log.i(TAG, "Couldn't unparcel intent annotations. Ignoring."); + mAnnotations = new String[0]; } }