У мене OnePlus One із вкоріненими Cyanogen OS 12 та Tasker v4.8 . У мене на комп’ютері скрипт bash, який при виході вимагає виконання завдання Tasker. Я бачив питання Запуск завдання задачі за допомогою SSHDroid (або оболонки adb), і хоча прийнята відповідь не працює на моєму Android, рішення дуже просте. Щоб викликати завдання, виконайте:
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "TASK_NAME"
Однак це все, що я можу успішно зробити. Під час виходу мій сценарій повинен передати стан виходу до завдання, щоб я міг продовжувати обробку на пристрої на основі результату сценарію.
Офіційне керівництво для посилаються завдань призначений для програмістів, так що не допомогла мені. За завданням запуску потоку за допомогою наміру я намагався різними способами передавати значення змінної, але безрезультатно.
Коли ми викликаємо завдання з іншого завдання, нам надається можливість передавати значення за допомогою двох змінних. Ці дві змінні можуть бути отримані викликаним завданням, використовуючи ім'я %par1
та %par2
. У моєму демо-завданні все, що я роблю, - це сповіщення → спалах → текст → Show me: %arg1 %par1
.
# Для демонстрації я створив завдання під назвою "lol" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" "par1" --es "varValues" "отримано" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" "% par1" --es "varValues" "отримано" adb shell su -c am Broadcast назва змінної par1 до Par1 у завданні adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" "% Par1" --es "varValues" "отримано"
Усі зазначені команди виконуються за допомогою цього виводу
Broadcasting: Intent { act=net.dinglisch.android.tasker.ACTION_TASK (has extras) }
Broadcast completed: result=0
Навіть надсилання цього мовлення працює
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -d "task:lol" --es "arg1" "received" # I setup a profile to listen to this intent and receive extra from it in a task linked to profile
Але зателефонувати безпосередньо в завдання і потім надіслати значення змінної нічого не робить.
Отже, де помилка в моєму підході та / або як я можу надсилати та отримувати змінне значення в задачі лише за допомогою командного рядка ?
Зауважте, що я не шукаю вирішення проблеми. Я цілком можу придумати багато обхідних шляхів, щоб отримати статус виходу зі свого сценарію на пристрої, але використання намірів виявляється найпростішим рішенням із них, і я хочу навчитися також цій техніці.
Оновлення
Я підняв запит на адресу:
- офіційні форуми - Завдання : Надішліть завдання з командного рядка та передайте йому змінну (и) та / або дані
- subreddit Tasker: Чи можуть бути передані змінні, коли завдання викликається з командного рядка?
- приватно в Pent, розробник Tasker, використовуючи електронну пошту
Я отримав цю відповідь від Pent, як електронною поштою, так і на форумі
Ви повинні мати змогу додати додатково StringArrayList до виклику adb за допомогою -e, не знаю, чи може adb це зробити.
Якщо так, щоб побачити формат, ви можете подивитися TaskerIntent.java http://tasker.dinglisch.net/code/TaskerIntent.java , функцію addLocalVariable, якщо ви розумієте Java.
І саме це я пізніше здогадувався після опублікування цього питання.
За відповідь тут , я вважаю, що масив рядків може бути переданий з допомогою ADB. Тож я спробував кілька запитів, але знову зіткнувся з тупиком.
adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" '{"arg1"}' --es "varValues" '{"час "}" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" '{"par1"}' --es "varValues" '{"час "}" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "ім'я завдання" "lol" --es "varNames" '{"par1" \, "arg1"}' --es "varValues "'{" отримано "\," знову "}"
Я також перетворив намір в URI за допомогою URI am to-intent-uri
і спробував надіслати URI наміру безпосередньо, без успіху знову.
Нове оновлення
Виходячи з показань, а саме. 1 , 2 і 3 , я абсолютно впевнений, що рядковий масив може бути переданий за adb shell am
допомогою --esa
аргументу. Приклад:
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --esa "par" "lol, cat" # value lol goes in par1 variable and value cat goes in par2 variable
Однак, цей запит все ще не працює:
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es task_name "lol" --esa varNames "arg1, par1" --esa varValues "lol, cat"
Нове оновлення №2
Ви можете використовувати акційний Android 6.0.1 в якості тестового майданчика.