diff options
| author | 2022-10-25 16:10:59 -0700 | |
|---|---|---|
| committer | 2022-10-25 16:17:16 -0700 | |
| commit | 1c886d0a4769207b2febeb2fa3199a88fd5b9bb9 (patch) | |
| tree | 9d87f407d9c3672150c5e2f0fdcbf495501f4798 /java/src | |
| parent | 2a432f1aa08612593bacb3a3fcf254d39189c06b (diff) | |
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
Diffstat (limited to 'java/src')
| -rw-r--r-- | java/src/com/android/intentresolver/ChooserActivity.java | 16 |
1 files changed, 11 insertions, 5 deletions
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 <K, V> Map<K, V> emptyIfNull(@Nullable Map<K, V> map) { + return map == null ? Collections.emptyMap() : map; + } } |