Как запустить приложение с помощью инструментов ADB для Android?

Как отправить намерение с помощью инструментов Android ADB?

Ответ 1

adb shell
am start -n com.package.name/com.package.name.ActivityName

Или вы можете использовать это напрямую:

adb shell am start -n com.package.name/com.package.name.ActivityName

Вы также можете указать действия, которые будут фильтроваться вашими фильтрами-намерениями:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

Ответ 2

Можно запустить приложение, определяющее имя пакета, только с помощью инструмента обезьяны, следуя этому шаблону:

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

Команда используется для запуска приложения с использованием инструмента обезьяны, который генерирует случайный ввод для приложения. Последняя часть команды - целое число, которое определяет количество генерируемых случайных данных для приложения. В этом случае число равно 1, что фактически используется для запуска приложения (щелчок значка).

Ответ 3

Или вы можете использовать это:

adb shell am start -n com.package.name/.ActivityName

Ответ 4

Пользователи linux/mac также могут создать script для запуска apk с чем-то вроде следующего:

создайте файл с именем "adb-run.sh" с этими тремя строками:

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act

затем "chmod + x adb-run.sh", чтобы сделать его исполняемым.

теперь вы можете просто:

adb-run.sh myapp.apk

Преимущество здесь в том, что вам не нужно знать имя пакета или имя запускаемой программы. Аналогичным образом вы можете создать "adb-uninstall.sh myapp.apk"

Примечание. Это требует, чтобы у вас был доступ к вашему пути. Вы можете найти его в новой папке инструментов сборки в SDK.

Ответ 5

Кроме того, я хочу упомянуть еще одну вещь.

При запуске приложения из adb shell am, он автоматически добавляет флаг FLAG_ACTIVITY_NEW_TASK, который приводит к изменению поведения. См. код.

Например, если вы запускаете активность Play Маркета с adb shell am, нажатие кнопки "Назад" (кнопка "Назад" ) не приведет к вашему приложению, вместо этого вам понадобится предыдущая игра в Play Маркете, если она есть (If не было задачи Play Store, тогда вам понадобится ваше приложение). Документация FLAG_ACTIVITY_NEW_TASK:

если задача уже запущена для текущей активности, то новое действие не будет запущено; вместо этого текущая задача будет просто перенесена в переднюю часть экрана с состоянием последнего в

Это заставило меня потратить несколько часов, чтобы узнать, что пошло не так.

Итак, имейте в виду, что adb shell am добавить флаг FLAG_ACTIVITY_NEW_TASK.

Ответ 6

открыть ~/.bash_profile и добавьте эти функции bash в конец файла

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

затем откройте папку проекта Android

androidinstall app-debug && androidrun com.example.app MainActivity

Ответ 7

Мы можем также запустить приложение, зная тип приложения и подавая его с данными:

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

Эта команда отображает доступные видеопроигрыватели для воспроизведения файла sample.3gp

Ответ 8

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

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d файл:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

Он будет работать на последнем Android-устройстве, при этом всплывающее окно не выберет приложение для открытия, поскольку вы предоставляете конкретное приложение, к которому вы хотите открыть свое изображение, с помощью

Ответ 9

monkey --pct-syskeys 0 для плат разработки

Без этого аргумента приложение не будет открываться на доске разработки без клавиш/отображения:

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

и с ошибкой с ошибкой:

SYS_KEYS has no physical keys but with factor 2.0%

Протестировано на HiKey960, Android O AOSP.

Из: https://github.com/ARM-software/lisa/pull/408

Также спросил: тест обезьяны: если в системе Android нет физических ключей, какие параметры должны быть включены в команду