How to run monkeyrunner on an already installed .apk

EGHDK picture EGHDK · Mar 22, 2013 · Viewed 9.3k times · Source

I'm trying to run some commands on an application that is already installed through monkeyrunner. I've edited the sample code listed on d.android.com and I changed it to this:

# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()

# Installs the Android package. Notice that this method returns a boolean, so you can test
# to see if the installation worked.
device.installPackage('myproject/bin/MyApplication.apk')

# sets a variable with the package's internal name
package = 'com.example.myTestApp'

# sets a variable with the name of an Activity in the package
# activity = 'com.example.android.myapplication.MainActivity'

# sets the name of the component to start
runComponent = package

# Runs the component
device.startActivity(component=runComponent)

# Presses the Menu button
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)

# Takes a screenshot
result = device.takeSnapshot()

# Writes the screenshot to a file
result.writeToFile('myproject/shot1.png','png')

As you can see, I changed the code to (hopefully) open com.example.myTestApp But it doesn't open my application, but it seems it runs the commands on the current application. Any ideas?

Answer

Diego Torres Milano picture Diego Torres Milano · Mar 22, 2013

You should specify the Activity in runComponent as

runComponent = package + "/" + activity

To get the names of the launchable Activities:

$ aapt dump badging <name>.apk | grep launchable-activity