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
This commit is contained in:
Jeff Sharkey
2021-08-03 13:37:50 -06:00
committed by Jeff Sharkey
parent 8e7af393e7
commit e1191ecf71

View File

@@ -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);
}