diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 2b1fdd865019a..336dc2077c972 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1747,6 +1747,10 @@ class ActivityStarter { // until after we launched to identify the relevant activity. transitionController.setTransientLaunch(mLastStartActivityRecord, mPriorAboveTask); } + if (!mSupervisor.mUserLeaving) { + // no-user-leaving implies not entering PiP. + transitionController.setCanPipOnFinish(false /* canPipOnFinish */); + } if (newTransition != null) { transitionController.requestStartTransition(newTransition, mTargetTask == null ? started.getTask() : mTargetTask, diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index 417e6ed6a07ee..6491d6bbe26e5 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -544,6 +544,12 @@ class TransitionController { } } + /** @see Transition#setCanPipOnFinish */ + void setCanPipOnFinish(boolean canPipOnFinish) { + if (mCollectingTransition == null) return; + mCollectingTransition.setCanPipOnFinish(canPipOnFinish); + } + void legacyDetachNavigationBarFromApp(@NonNull IBinder token) { final Transition transition = Transition.fromBinder(token); if (transition == null || !mPlayingTransitions.contains(transition)) {