Как отправить намерение с помощью инструментов Android ADB?
Как запустить приложение с помощью инструментов ADB для Android?
Ответ 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 нет физических ключей, какие параметры должны быть включены в команду