From e1191ecf7191820feae9bd25bc5b70a1e67d0910 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 3 Aug 2021 13:37:50 -0600 Subject: [PATCH] Consider Intent.setPackage() for "leaving". When deciding if an intent is "leaving" the package, consider both Intent.setComponent() and Intent.setPackage(). Bug: 195405741 Test: manual Change-Id: I3c9460579242dcd874f3bb85fad46e1273306baa --- core/java/android/content/Intent.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index e109ae558ea2b..437176a44661d 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -11371,8 +11371,17 @@ public class Intent implements Parcelable, Cloneable { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public void prepareToLeaveProcess(Context context) { - final boolean leavingPackage = (mComponent == null) - || !Objects.equals(mComponent.getPackageName(), context.getPackageName()); + final boolean leavingPackage; + if (mComponent != null) { + leavingPackage = !Objects.equals(mComponent.getPackageName(), context.getPackageName()); + } else if (mPackage != null) { + leavingPackage = !Objects.equals(mPackage, context.getPackageName()); + } else { + // When no specific component or package has been defined, we have + // to assume that we might be routed through an intent + // disambiguation dialog which might leave our package + leavingPackage = true; + } prepareToLeaveProcess(leavingPackage); }