OSDN Git Service

DO NOT MERGE ANYWHERE Add supports-multiwindow command to am.
authorMichael Kwan <mkwan@google.com>
Thu, 3 Nov 2016 08:04:24 +0000 (01:04 -0700)
committerMichael Kwan <mkwan@google.com>
Thu, 3 Nov 2016 19:18:21 +0000 (19:18 +0000)
The supports-multiwindow command allows the ability to
check if the device has multiwindow support in the shell.

Bug: 30120559
Change-Id: I466e28d8a794fa457826a6526ef9ef660cd3856c

cmds/am/src/com/android/commands/am/Am.java

index d6c0058..c460b04 100644 (file)
@@ -48,7 +48,9 @@ import android.content.pm.InstrumentationInfo;
 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.os.UserHandle;
 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 @@ public class Am extends BaseCommand {
                 "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 @@ public class Am extends BaseCommand {
             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 @@ public class Am extends BaseCommand {
         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.