Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 040b4826 authored by Michael Kwan's avatar Michael Kwan
Browse files

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
parent 7ffc2a62
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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.