Как фильтровать конкретные действия, которые нужно протестировать обезьяной с помощью android.intent.category?

Я пытаюсь подчеркнуть тест своего приложения для Android с помощью инструмента обезьяны упражнений.

По умолчанию инструмент будет осуществлять действия, имеющие категорию Intent.CATEGORY_LAUNCHER или Intent.CATEGORY_MONKEY в соответствии с документ.

package="my.android" 

    <activity android:name=".activities.MyApp">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>        
    <activity android:name=".activities.MyScreen">
        <intent-filter>
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
    </activity>
    <activity android:name=".activities.MySettings"/>

Я не хочу проверять MySettings на Monkey.

В моем реальном случае это происходит потому, что эта активность делает выход из системы. Поэтому после выхода из системы нет способа войти в систему, чтобы продолжить тестирование остальных экранов, что является всей идеей теста.

./adb shell monkey -p my.android -v 500
:Monkey: seed=0 count=500
:AllowPackage: my.android
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
..
    // Allowing start of Intent { cmp=my.android/.activities.MySettings} in package my.android
..

Он должен отклоняться, а не позволять мне догадываться. Любая идея, как избежать обезьяны, чтобы попасть в занятия, которые я не хочу?

Ответ 1

Как я справился с этим, добавив следующее в onCreate (...) действия, которые вы не хотите тестировать обезьяны:

if (ActivityManager.isUserAMonkey()) { finish(); }

Таким образом, действие немедленно выходит, если оно проверяется обезьяной.