From 1c886d0a4769207b2febeb2fa3199a88fd5b9bb9 Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Tue, 25 Oct 2022 16:10:59 -0700 Subject: Fix NPE Fix NPE when launching chooser with a caller-specified target. Enforce non-nullability of the ChooserListAdapter#addServiceResult map arguments. Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference at com.android.intentresolver.ShortcutSelectionLogic.addServiceResults(ShortcutSelectionLogic.java:111) Test: manual testing with a caller-specified target Change-Id: I3ff85351d84545cb8a7537f703dc7cbc6214b272 --- java/src/com/android/intentresolver/ChooserActivity.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'java/src/com') diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index 193956f9..c88b2eb9 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -138,6 +138,7 @@ import java.net.URISyntaxException; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -498,9 +499,10 @@ public class ChooserActivity extends ResolverActivity implements if (adapterForUserHandle != null) { adapterForUserHandle.addServiceResults( resultInfo.originalTarget, - resultInfo.resultTargets, msg.arg1, - mDirectShareShortcutInfoCache, - mDirectShareAppTargetCache); + resultInfo.resultTargets, + msg.arg1, + emptyIfNull(mDirectShareShortcutInfoCache), + emptyIfNull(mDirectShareAppTargetCache)); } } } @@ -1689,8 +1691,8 @@ public class ChooserActivity extends ResolverActivity implements /* origTarget */ null, Lists.newArrayList(mCallerChooserTargets), TARGET_TYPE_DEFAULT, - /* directShareShortcutInfoCache */ null, - /* directShareAppTargetCache */ null); + /* directShareShortcutInfoCache */ Collections.emptyMap(), + /* directShareAppTargetCache */ Collections.emptyMap()); } } @@ -4022,4 +4024,8 @@ public class ChooserActivity extends ResolverActivity implements private boolean shouldNearbyShareBeIncludedAsActionButton() { return !shouldNearbyShareBeFirstInRankedRow(); } + + private static Map emptyIfNull(@Nullable Map map) { + return map == null ? Collections.emptyMap() : map; + } } -- cgit v1.2.3-59-g8ed1b