Вопрос или проблема
Я пытаюсь запустить намерение к ярлыку потока в Automate (от Llamalabs) с помощью команды am, предоставленной Termux, но команда am требует параметр Activity Class для запуска ярлыка, и я не могу его найти. Automate смогла запустить это без класса активности, но я просто не могу понять, как сделать это с помощью команды am.
Как мне выполнить запуск намерения без класса активности с помощью команды am?
Я попытался запустить команды вроде этой:
am start -a com.llamalab.automate.intent.action.START_FLOW -d content://com.llamalab.automate.provider/flows/58/statements/ -c android.intent.category.DEFAULT
Но это привело к следующему выводу
Запуск: Intent { act=com.llamalab.automate.intent.action.START_FLOW cat=[android.intent.category.DEFAULT] dat=content://com.llamalab.automate.provider/... }
Ошибка: Активность не запущена, невозможно разрешить Intent { act=com.llamalab.automate.intent.action.START_FLOW cat=[android.intent.category.DEFAULT] dat=content://com.llamalab.automate.provider/... flg=0x10000000 }
И я попытался больше исследовать команду am, но все еще безуспешно. Я нашел команду monkey, встроенную в оболочку Android, но она не работает, так как продолжает говорить, что менеджер окон не работает.
Параметры, которые у меня есть на ярлыке для намерения:
Data URI: content://com.llamalab.automate.provider/flows/58/statements/1
Action: com.llamalab.automate.intent.action.START_FLOW
Package: com.llamalab.automate
.
Ответ или решение
Для запуска намерения (intent) в приложении Automate на Android с помощью команды am
в Termux, вам действительно потребуется указать класс активности (Activity Class). Однако, если вы не можете его найти, возможно, существуют альтернативные способы запуска вашего намерения, даже если вы не указываете явно класс активности.
Понимание внутренней структуры
Прежде всего, стоит понять, что am
(Activity Manager) ожидает, что вы предоставите не только действие (action), но и компонент (комбинация пакета и класса активности), чтобы корректно начать действие. Ваша команда:
am start -a com.llamalab.automate.intent.action.START_FLOW -d content://com.llamalab.automate.provider/flows/58/statements/ -c android.intent.category.DEFAULT
попробует запустить действие без указания класса активности, что и является источником ошибки. Ошибка, которую вы получаете: Activity not started, unable to resolve Intent
, указывает на то, что система не может определить, какая активность должна быть запущена для обработки данного намерения.
Получение имени активности
Для того чтобы найти имя активности, вы можете использовать пакетный менеджер (Package Manager) Android. Запустите следующую команду:
pm dump com.llamalab.automate | grep -A 1 "Activities"
Это позволит вам увидеть список доступных активностей в приложении Automate, и вы сможете найти ту, которая соответствует вашему намерению.
Альтернативный способ запуска намерения
Если, несмотря на указание активности, вы все равно не можете запустить ваше намерение, можно использовать программный подход через adb shell
и прямой вызов соответствующего намерения. Например:
adb shell am start -n com.llamalab.automate/.YourActivityName -a com.llamalab.automate.intent.action.START_FLOW -d content://com.llamalab.automate.provider/flows/58/statements/
Замените YourActivityName
на найденное вами имя активности.
Примечание по команду Monkey
Команда monkey
действительно предназначена для тестирования пользовательского интерфейса и, если система окна не запущена, она не сможет выполнить свою задачу. Для решения этой проблемы убедитесь, что у вас есть активное пользовательское интерфейсное окружение при запуске этой команды.
Заключение
Запуск намерений в Android может быть сложной задачей, особенно если не хватает информации о классе активности. Используя пакетный менеджер для получения необходимой информации, у вас есть возможность правильно сформировать команду и добиться нужного результата. Если у вас есть конкретные требования к запуску сценария без активности, мы можем исследовать другие возможные подходы, включая передачу через другие компоненты Android.