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