tjb
tjb

Reputation: 11728

Android: Using Categories in Monkey

How do I use the categories option of the monkey tool?

The relevant portion of my manifest file looks like this:

   <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="MyApp" android:debuggable="true" android:allowBackup="false" android:testOnly="false">
        <activity android:name="MyLauncherActivity" android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="MyMainActivity" android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="none" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity>

I run the application on my phone to make sure it is working then I enter this at the command line:

adb shell monkey -p my.full.package.path -vvv 3

It works just fine.

But this doesn't work:

adb shell monkey -p my.full.package.path -c intent.CATEGORY_LAUNCHER -vvv 3

and yields the following output:

:Monkey: seed=0 count=3

:AllowPackage: myapp.full.package.path

:IncludeCategory: intent.CATEGORY_LAUNCHER

// Warning: no activities found for category intent.CATEGORY_LAUNCHER

** No activities found to run, monkey aborted.

And trying some variants also didn't work:

    :Monkey: seed=0 count=3

:AllowPackage: my.full.package.path

:IncludeCategory: CATEGORY_MONKEY

:IncludeCategory: intent.CATEGORY_MONKEY

:IncludeCategory: android.intent.MONKEY

:IncludeCategory: android.intent.category.MONKEY

:IncludeCategory: MONKEY

// Warning: no activities found for category CATEGORY_MONKEY

// Warning: no activities found for category intent.CATEGORY_MONKEY

// Warning: no activities found for category android.intent.MONKEY

// Warning: no activities found for category MONKEY

** No activities found to run, monkey aborted.

How do I specify categories

Upvotes: 11

Views: 7747

Answers (2)

kotlinski
kotlinski

Reputation: 330

As far as I can understand by looking at the Monkey source code is that the -c argument stands for "main-category", it will only work in combination with a main-action. That the -c/main-categories criteria will only work when the monkey tries to start the app with "Implicit Intents" and not "Explicit Intents" within the app.

<intent-filter>
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.MONKEY" />
</intent-filter>

https://android.googlesource.com/platform/development/+/master/cmds/monkey/src/com/android/commands/monkey/Monkey.java

Upvotes: 0

James Becwar
James Becwar

Reputation: 1206

You're really close. This worked for me:

adb shell monkey -p com.JamesBecwar.test -c android.intent.category.LAUNCHER -vvv 3

I think the problem is that you need to include the Launcher too, because if you don't monkey can't start the program. Don't worry you can put more then one -c param. For example you could do:

adb shell monkey -p com.JamesBecwar.test -c android.intent.category.LAUNCHER -c android.intent.category.MONKEY -vvv 3

and it should work.

Upvotes: 11

Related Questions