Search code examples
androidmonkeyrunner

Android ChimpChat pressing backspace


I'm trying to use ChimpChat for a project which includes injecting input events into a connected device.

There are methods 1. void press(PhysicalButton key, TouchPressType type); 2. void press(String keyName, TouchPressType type);

I'm able to use the 1st method properly through: iDevice.press(button, type);

However, I can't get the 2nd method to work. Trying something like iDevice.press ("A", type) does not type an "A" on the device, even though the following is logged:

Feb 27, 2012 4:58:36 PM com.android.chimpchat.ChimpManager sendMonkeyEventAndGetResponse INFO: Monkey Command: key down A.

I was able to work around this by using

  1. void type(String string);

Now my question is, how do I get the backspace key to work? Calling type("\b"); doesn't erase on the device.

Has anyone used the 2. void press(String keyName, TouchPressType type); method previously? If so, am I doing something wrong? I'm a bit confused by what keyName is supposed to be. If not, does any one know how to send the backspace character to the device?

Thanks a lot!


Solution

  • Last I looked ChimpManager has a few more methods than the IDevice exposes. You can access the other methods via device.getManager(). One of those methods that might help you is press(PhysicalButton). So you should be able to get the backspace to work like this:

    device.getManager().press(PhysicalButton.BACK)
    

    Look at the source for more insight to how it all works.

    UPDATE:

    Oops, you're looking for the backspace! According to the monkey README:

    key [down|up] keycode

    This command injects KeyEvent's into the input system. The keycode parameter refers to the KEYCODE list in the KeyEvent class (http://developer.android.com/reference/android/view/KeyEvent.html). The format of that parameter is quite flexible. Using the menu key as an example, it can be 82 (the integer value of the keycode), KEYCODE_MENU (the name of the keycode), or just menu (and the Monkey will add the KEYCODE part). Do note that this last part doesn't work for things like KEYCODE_1 for obvious reasons.

    So looking at the KeyEvent class you should be able to use:

    device.getManager().keyDown("KEYCODE_DEL") // Backspace according to KeyEvent
    // OR
    device.getManager().keyDown("67")