Add hidden API to check support of Multi-Display

Added ActivityManager#supportsMultiDisplay() to check if system
supports running activities on secondary displays.

Bug: 36776777
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testMultiDisplayDisabled
Change-Id: I18f98f2f6a9e865ad8dc63a470210190536d3271
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 4004bd6..e288387 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1118,6 +1118,16 @@
     }
 
     /**
+     * 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 be5ff80..4830b4b 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 @@
         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 @@
             }
             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 @@
                     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 6011418..2b3a19a 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 @@
         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 @@
         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 @@
         if (res == null) {
             return -1;
         }
-        pw.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiDisplay));
+        pw.println(ActivityManager.supportsMultiDisplay());
         return 0;
     }