DO NOT MERGE ANYWHERE Add supports-multiwindow command to am.
The supports-multiwindow command allows the ability to
check if the device has multiwindow support in the shell.
Bug: 30120559
Change-Id: I466e28d8a794fa457826a6526ef9ef660cd3856c
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index d6c0058..c460b04 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -48,7 +48,9 @@
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
+import android.content.res.AssetManager;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Build;
@@ -64,6 +66,7 @@
import android.text.TextUtils;
import android.util.AndroidException;
import android.util.ArrayMap;
+import android.util.DisplayMetrics;
import android.view.IWindowManager;
import com.android.internal.os.BaseCommand;
@@ -361,6 +364,8 @@
"am send-trim-memory: send a memory trim event to a <PROCESS>.\n" +
"\n" +
"am get-current-user: returns id of the current foreground user.\n" +
+ "\n" +
+ "am supports-multiwindow: returns true if the device supports multiwindow.\n" +
"\n"
);
Intent.printIntentArgsHelp(pw, "");
@@ -458,6 +463,8 @@
runSendTrimMemory();
} else if (op.equals("get-current-user")) {
runGetCurrentUser();
+ } else if (op.equals("supports-multiwindow")) {
+ runSupportsMultiwindow();
} else {
showError("Error: unknown command '" + op + "'");
}
@@ -2534,6 +2541,21 @@
System.out.println(currentUser.id);
}
+ private void runSupportsMultiwindow() throws Exception {
+ // system resources does not contain all the device configuration, construct it manually.
+ Configuration config = mAm.getConfiguration();
+ if (config == null) {
+ throw new AndroidException("Activity manager has no configuration");
+ }
+
+ final DisplayMetrics metrics = new DisplayMetrics();
+ metrics.setToDefaults();
+
+ Resources res = new Resources(AssetManager.getSystem(), metrics, config);
+
+ System.out.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiWindow));
+ }
+
/**
* Open the given file for sending into the system process. This verifies
* with SELinux that the system will have access to the file.