Как запустить действие конкретного приложения через терминал?
13
Мне нужно запустить мое приложение для Android с удаленного компьютера через SSH, но я не специалист по командной строке, поэтому я хотел бы знать: как запустить определенное действие приложения? (не просто открыть его) Что подразумевает: как ЗНАТЬ точный синтаксис возможных действий приложения?
Например: я хочу запустить приложение аудиозаписи на телефоне с моего компьютера И начать запись с пульта дистанционного управления. Является ли это возможным?
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Для управления приложением вы должны указать правильные значения <package_name>и <full_class_name>в команде. Например, вы можете использовать com.google.gmail/com.google.gmail.check_mail(гипотетические имена) в качестве последней части команды.
Многие разработчики приложений хранят информацию о классе в секрете.
Не все разработчики делают умное модульное программирование. Полезно делить приложение на несколько классов, которые могут быть вызваны намерениями, но не все разработчики умны.
Решение первой проблемы: декомпилировать приложение, используя apktool и просмотрите всю информацию. Есть и другие способы, но это всегда работающий метод (если только приложение не основано на NDK, а не на SDK).
Решение 2-й проблемы: ничего.
Не волнуйтесь, большинство популярных приложений следуют лучшим практикам программирования и предоставляют информацию, Public APIиз которой вы можете получить информацию о классе.
Не могли бы вы пояснить параметры <package_name>и <full_class_name>, как их получить? Для меня, по крайней мере, последнее не ясно.
Иззи
@Izzy Добавлено объяснение ... Еще раз просмотрите ответ.
Android Quesito
Благодарность! +1 от меня: D Компактно и легко понять. Я позволю себе добавить некоторые ссылки, если вы не возражаете, потому что apktools(не разработчики в противном случае могут подумать, что это часть SDK и потерялись;)
Иззи
@Izzy Вот моя проблема: я не могу запустить эту активность в настройках приложения: com.android.settings/.Settings$StorageSettingsActivity. Попробуй сам. На самом деле, что это за строка после $знака? Это как подкласс в действии Настройки?
Гокул NC
@GokulNC, вам может понадобиться заключить в кавычки все (одинарные кавычки), или вы $StorageSettingsActivityможете рассматривать его как переменную и «раскрывать» до пустой строки (если только переменная не определена этим именем).
Иззи
9
Как сказал Сачин Шекхар, вы должны использовать следующую команду:
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Смотрите конкретный пример:
получение apk-файла с вашего Android-устройства или из любого магазина
<package_name>
и<full_class_name>
, как их получить? Для меня, по крайней мере, последнее не ясно.apktools
(не разработчики в противном случае могут подумать, что это часть SDK и потерялись;)com.android.settings/.Settings$StorageSettingsActivity
. Попробуй сам. На самом деле, что это за строка после$
знака? Это как подкласс в действии Настройки?$StorageSettingsActivity
можете рассматривать его как переменную и «раскрывать» до пустой строки (если только переменная не определена этим именем).Как сказал Сачин Шекхар, вы должны использовать следующую команду:
Смотрите конкретный пример:
aapt dump xmltree com.android.settings*.apk AndroidManifest.xml
Я хотел бы запустить меню «модема», поэтому я ищу поиск в выводе:
Итак, последняя команда:
Команда
aapt
является частью Android SDKисточник
com.android.settings
ПУТЬ, поэтому я сказал, что это относительно. Протестируйте его в любом приложении.