Предотвращение Android Monkey от запуска деятельности - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть приложение, которое я хочу проверить Monkey с помощью Android ADB Monkey Exerciser.Я хочу, чтобы «обезьяна» бездельничала в виде списка товаров, но не позволяла ей переходить к операции оплаты / заказа.Я подумал, что будет достаточно добавить категорию обезьян в фильтре намерений действий ко всем действиям, кроме действия оплаты / заказа.Но Обезьяне все же удается щелкнуть по своему пути к Платежу / Заказу.

Параметр пакета работает должным образом, но не параметр категории.

-c main-category

Если вы укажете одну или несколько категорий таким образом, Monkey разрешит системе посещать только те виды деятельности, которые перечислены в одной из указанных категорий.Если вы не укажете ни одной категории, Monkey выберет действия, перечисленные с категорией Intent.CATEGORY_LAUNCHER или Intent.CATEGORY_MONKEY.Чтобы указать несколько категорий, используйте параметр -c несколько раз - по одному параметру -c на категорию.

https://developer.android.com/studio/test/monkey

Так обычно выглядят мои действия с категорией Monkey,Моя проблема в том, что Обезьяна позволяет начинать действия без категории Обезьяна.

<activity
    android:name=".activity.SomeActivity"
    android:parentActivityName=".activity.drawer.ParentActivity">
  <intent-filter>
    <category android:name="android.intent.category.MONKEY"/>
  </intent-filter>
</activity>

Так обычно выглядит моя команда ADB.

monkey -p <my.package.name> -c android.intent.category.MONKEY -v -v 200

После прочтения исходного кода Monkey я понимаю, что категория Monkey работает только тогда, когда Monkey пытается запустить Main Activity с неявным намерением, и что категории игнорируются при запуске приложения ExplicitИнтенты в приложении.https://android.googlesource.com/platform/development/+/master/cmds/monkey/src/com/android/commands/monkey/Monkey.java


Насколько я понимаю, параметр -c main-category работает только при наличии действия "MAIN" в фильтре намерений.И что мне нужно добавить проверку Monkey User по коду в приложении, чтобы предотвратить переход к некоторым моим действиям / фрагментам:

Базовая активность

onCreate(){
     if(ActivityManager.isUserAMonkey() && !canMonkeyAroundHere()){
         quit()
     }
}

интерфейс canMonkeyAroundHere ()

Activity Impl
   override
     canMonkeyAroundHere(){
      return true;
    }
...