diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 5400e0ddcbd6..c0a65055e6c2 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -266,6 +266,7 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.LAST_STATIC_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT; +import static android.content.pm.PackageManager.FEATURE_LEANBACK_ONLY; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.GET_PROVIDERS; import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING; @@ -1344,6 +1345,7 @@ public final class ActivityManagerService extends ActivityManagerNative boolean mSupportsMultiWindow; boolean mSupportsFreeformWindowManagement; boolean mSupportsPictureInPicture; + boolean mSupportsLeanbackOnly; Rect mDefaultPinnedStackBounds; IActivityController mController = null; boolean mControllerIsAMonkey = false; @@ -12785,6 +12787,9 @@ public final class ActivityManagerService extends ActivityManagerNative final boolean forceRtl = Settings.Global.getInt(resolver, DEVELOPMENT_FORCE_RTL, 0) != 0; final boolean forceResizable = Settings.Global.getInt( resolver, DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0; + final boolean supportsLeanbackOnly = + mContext.getPackageManager().hasSystemFeature(FEATURE_LEANBACK_ONLY); + // Transfer any global setting for forcing RTL layout, into a System Property SystemProperties.set(DEVELOPMENT_FORCE_RTL, forceRtl ? "1":"0"); @@ -12800,6 +12805,7 @@ public final class ActivityManagerService extends ActivityManagerNative mWaitForDebugger = mOrigWaitForDebugger = waitForDebugger; mAlwaysFinishActivities = alwaysFinishActivities; mLenientBackgroundCheck = lenientBackgroundCheck; + mSupportsLeanbackOnly = supportsLeanbackOnly; mForceResizableActivities = forceResizable; mWindowManager.setForceResizableTasks(mForceResizableActivities); if (supportsMultiWindow || forceResizable) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 8b637e0ae44d..ba044cc4c2a1 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1832,9 +1832,9 @@ final class ActivityStack { boolean isVisible = !behindFullscreenActivity || r.mLaunchTaskBehind || activityVisibleBehind; - if (isVisible && r.isRecentsActivity()) { - // Recents activity can only be visible if the home stack is the focused stack or we are - // in split-screen mode. + if (mService.mSupportsLeanbackOnly && isVisible && r.isRecentsActivity()) { + // On devices that support leanback only (Android TV), Recents activity can only be + // visible if the home stack is the focused stack or we are in split-screen mode. isVisible = mStackSupervisor.getStack(DOCKED_STACK_ID) != null || mStackSupervisor.isFocusedStack(this); } |