diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 4004bd6686b1f..e2883873752c9 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1117,6 +1117,16 @@ public class ActivityManager { com.android.internal.R.bool.config_supportsSplitScreenMultiWindow); } + /** + * Returns true if the system supports running activities on secondary displays. + * @hide + */ + static public boolean supportsMultiDisplay() { + return !isLowRamDeviceStatic() + && Resources.getSystem().getBoolean( + com.android.internal.R.bool.config_supportsMultiDisplay); + } + /** * Return the maximum number of actions that will be displayed in the picture-in-picture UI when * the user interacts with the activity currently in picture-in-picture mode. diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index be5ff803ed564..4830b4bcca556 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13763,6 +13763,7 @@ public class ActivityManagerService extends IActivityManager.Stub final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(); final boolean supportsSplitScreenMultiWindow = ActivityManager.supportsSplitScreenMultiWindow(); + final boolean supportsMultiDisplay = ActivityManager.supportsMultiDisplay(); final String debugApp = Settings.Global.getString(resolver, DEBUG_APP); final boolean waitForDebugger = Settings.Global.getInt(resolver, WAIT_FOR_DEBUGGER, 0) != 0; final boolean alwaysFinishActivities = @@ -13800,6 +13801,7 @@ public class ActivityManagerService extends IActivityManager.Stub } mSupportsSplitScreenMultiWindow = supportsSplitScreenMultiWindow; mSupportsPictureInPicture = supportsPictureInPicture; + mSupportsMultiDisplay = supportsMultiDisplay; mWindowManager.setForceResizableTasks(mForceResizableActivities); mWindowManager.setSupportsPictureInPicture(mSupportsPictureInPicture); // This happens before any activities are started, so we can change global configuration @@ -13828,8 +13830,6 @@ public class ActivityManagerService extends IActivityManager.Stub com.android.internal.R.fraction.thumbnail_fullscreen_scale, 1, 1); } mWaitForNetworkTimeoutMs = waitForNetworkTimeoutMs; - mSupportsMultiDisplay = res.getBoolean( - com.android.internal.R.bool.config_supportsMultiDisplay); } } diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index 601141827f3c1..2b3a19a83e556 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -2386,7 +2386,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (res == null) { return -1; } - pw.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiWindow)); + pw.println(ActivityManager.supportsMultiWindow()); return 0; } @@ -2395,8 +2395,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (res == null) { return -1; } - pw.println( - res.getBoolean(com.android.internal.R.bool.config_supportsSplitScreenMultiWindow)); + pw.println(ActivityManager.supportsSplitScreenMultiWindow()); return 0; } @@ -2405,7 +2404,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (res == null) { return -1; } - pw.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiDisplay)); + pw.println(ActivityManager.supportsMultiDisplay()); return 0; }