TakeScreenshot

 

package io.appium.android.bootstrap.handler;

 

import com.android.uiautomator.core.UiDevice;

import io.appium.android.bootstrap.AndroidCommand;

import io.appium.android.bootstrap.AndroidCommandResult;

import io.appium.android.bootstrap.CommandHandler;

 

import java.io.File;

 

/**

 * This handler is used to TakeScreenshot.

 *

 */

public class TakeScreenshot extends CommandHandler {

 

  /*

   * @param command The {@link AndroidCommand} used for this handler.

   *

   * @return {@link AndroidCommandResult}

   *

   * @throws JSONException

   *

   * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.

   * bootstrap.AndroidCommand)

   */

  @Override

  public AndroidCommandResult execute(final AndroidCommand command) {

    final File screenshot = new File("/data/local/tmp/screenshot.png");

 

    try {

      screenshot.getParentFile().mkdirs();

    } catch (final Exception e) {

    }

 

    if (screenshot.exists()) {

      screenshot.delete();

    }

 

    UiDevice.getInstance().takeScreenshot(screenshot);

    return getSucce***esult(screenshot.exists());

  }

}

截屏并将图片保存在/data/local/tmp路径下的screenshot.png文件中。

 

OpenNotification

 

package io.appium.android.bootstrap.handler;

 

import com.android.uiautomator.core.UiDevice;

import io.appium.android.bootstrap.AndroidCommand;

import io.appium.android.bootstrap.AndroidCommandResult;

import io.appium.android.bootstrap.CommandHandler;

 

import static io.appium.android.bootstrap.utils.API.API_18;

 

/**

 * This handler is used to open the notification shade on the device.

 *

 */

public class OpenNotification extends CommandHandler {

 

  /*

   * @param command The {@link AndroidCommand} used for this handler.

   *

   * @return {@link AndroidCommandResult}

   *

   * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.

   * bootstrap.AndroidCommand)

   */

  @Override

  public AndroidCommandResult execute(final AndroidCommand command) {

    // method was only introduced in API Level 18

    if (!API_18) {

      return getErrorResult("Unable to open notifications on device below API level 18");

    }

 

    // does not make sense on an element

    if (command.isElementCommand()) {

      return getErrorResult("Unable to open notifications on an element.");

    }

 

    final UiDevice device = UiDevice.getInstance();

    if (device.openNotification()) {

      return getSucce***esult(true);

    } else {

      return getErrorResult("Device failed to open notifications.");

    }

  }

}

打开通知栏操作,api18以后在UiDevice中添加了openNotification()方法,打开通知栏。所以该事件就是去调用该方法。