コード例 #1
0
  @Override
  public Result execute(Map<String, Object> arguments) throws UiObjectNotFoundException {
    super.execute(arguments);
    @SuppressWarnings("unchecked")
    List<String> optionNames = (List<String>) arguments.get("optionNames");
    ;
    UiScrollable optionsMenu =
        new UiScrollable(
            new UiSelector()
                .className("android.widget.ListView")
                .packageName("com.android.settings")
                .focused(false));

    if (!isUiObjectAvailable(optionsMenu, arguments)) {
      return Result.FAILURE;
    }

    for (String optionName : optionNames) {
      UiObject option =
          optionsMenu.getChildByText(
              new UiSelector().className(TextView.class.getName()), optionName);
      if (!isUiObjectAvailable(option, arguments) && !enabled.equals(option.isEnabled())) {
        return Result.FAILURE;
      }
    }
    return Result.OK;
  }
コード例 #2
0
  private void loadXPrivacyConfig(String actionCommand) {
    // There is an intent to open the import configuration screen,
    // however there is a bug on XPrivacy, when that intent is called,
    // after a file is selected its contents are not displayed and no
    // operation is performed
    Log.d(uiaDaemon_logcatTag, "Loading XPrivacy configuration file.");

    // Extract the configuration file name
    String fileName = actionCommand.split("=")[1];
    Log.d(uiaDaemon_logcatTag, "Filename = " + fileName);

    try {
      // launchApp("XPrivacy");

      String XPrivacy = "biz.bokhorst.xprivacy";
      String XPrivacyToolbar = XPrivacy + ":id/widgetToolbar";
      String XPrivacyOkButton = XPrivacy + ":id/btnOk";
      UiObject toolbar = this.device.findObject(new UiSelector().resourceId(XPrivacyToolbar));

      // Locate the toolbar
      UiObject buttonSet = toolbar.getChild(new UiSelector().index(2));
      UiObject menuButton = buttonSet.getChild(new UiSelector().index(1));
      // Click to open the menu
      menuButton.click();
      waitForGuiToStabilize();

      // Select "Operations …" item from menu
      UiObject operationsButton = this.device.findObject(new UiSelector().text("Operations …"));
      operationsButton.click();
      waitForGuiToStabilize();

      // Select "Import"
      UiObject importButton = this.device.findObject(new UiSelector().text("Import"));
      importButton.click();
      waitForGuiToStabilize();

      // Select configuration file
      UiObject fileManagerButton = this.device.findObject(new UiSelector().text("OI File Manager"));
      fileManagerButton.click();
      waitForGuiToStabilize();

      UiObject textInput = this.device.findObject(new UiSelector().text("File name"));
      textInput.setText(fileName);

      UiObject pickFileButton = this.device.findObject(new UiSelector().text("Pick file"));
      pickFileButton.click();
      waitForGuiToStabilize();

      UiObject okButton = this.device.findObject(new UiSelector().resourceId(XPrivacyOkButton));
      okButton.click();

      do {
        okButton = this.device.findObject(new UiSelector().resourceId(XPrivacyOkButton));
        waitForGuiToStabilize();
      } while (!okButton.isEnabled());

      waitForGuiToStabilize();

      okButton.click();
      this.device.waitForIdle();
      waitForGuiToStabilize();

      // Return to home
      this.device.pressHome();
      this.device.waitForIdle();
    } catch (UiObjectNotFoundException ex) {
      Log.e(uiaDaemon_logcatTag, "Failed to import XPrivacy configuration.");
    }
    // catch (UiAutomatorDaemonException ex)
    // {
    //  Log.e(uiaDaemon_logcatTag, "Failed to start XPrivacy.");
    // }

    Log.d(uiaDaemon_logcatTag, "XPrivacy configuration file loaded.");
  }