ฉัน OnePlus หนึ่งที่หยั่งราก Cyanogen OS 12 และทาซเคอ v4.8 ฉันทุบตีสคริปต์ในพีซีซึ่งเมื่อออกจากงานจะต้องมีการเรียกใช้ภารกิจของ Tasker ฉันเคยเห็นคำถามการเรียกใช้งาน tasker ผ่าน SSHDroid (หรือ adb shell)และถึงแม้ว่าคำตอบที่ได้รับการยอมรับจะไม่ทำงานบน Android ของฉันการแก้ปัญหาก็ง่ายมาก ในการเรียกภารกิจให้ทำ:
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "TASK_NAME"
อย่างไรก็ตามนั่นคือทั้งหมดที่ฉันสามารถทำได้ ในระหว่างการออกสคริปต์ของฉันต้องผ่านสถานะการออกเพื่องานเพื่อให้ฉันสามารถดำเนินการประมวลผลบนอุปกรณ์ตามผลของสคริปต์
คู่มืออย่างเป็นทางการสำหรับงานที่กล่าวอ้างมีความหมายสำหรับการเขียนโปรแกรมเพื่อให้ไม่ได้ช่วยฉัน ตามหัวข้อLaunch Task ผ่านทาง Intentฉันพยายามหลายวิธีในการส่งผ่านค่าของตัวแปร แต่ไม่มีประโยชน์
เมื่อเราเรียกใช้งานจากงานอื่นเราได้รับความยืดหยุ่นในการส่งผ่านค่าโดยใช้ตัวแปรสองตัว ทั้งสองตัวแปรสามารถได้รับจากงานที่เรียกใช้ชื่อและ%par1
ในงานสาธิตของฉันทั้งหมดที่ฉันทำคือการแจ้งเตือน→แฟลช→ข้อความ→%par2
Show me: %arg1 %par1
# สำหรับการสาธิตเท่านั้นฉันสร้างงานชื่อ "lol" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - เป็น "varNames" "par1" --es "varValues" "ได้รับ" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - เป็น "varNames" "% par1" - ได้รับ "varValues" "ได้รับ" adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - "varNames" "Par1" - ได้รับ "varValues" "ได้รับ" # ฉันยังเปลี่ยน ชื่อตัวแปร par1 ถึง Par1 ในงาน adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - เป็น "varNames" "% Par1" - ได้รับ "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
แต่การเรียกใช้งานโดยตรงแล้วส่งค่าตัวแปรไม่ได้ทำอะไรเลย
ดังนั้นความผิดพลาดในแนวทางของฉันและ / หรือฉันจะส่งและรับค่าตัวแปรในงานโดยใช้บรรทัดคำสั่งได้อย่างไร
โปรดทราบว่าฉันไม่ได้มองหาวิธีแก้ปัญหา ฉันสามารถหาวิธีแก้ปัญหาหลายอย่างเพื่อรับสถานะทางออกจากสคริปต์บนอุปกรณ์ได้อย่างสมบูรณ์แบบ แต่การใช้ความตั้งใจดูเหมือนจะเป็นวิธีที่ตรงไปตรงมาที่สุดสำหรับพวกเขาและฉันต้องการเรียนรู้เทคนิคนี้ด้วย
ปรับปรุง
ฉันยกคำถามของฉันที่:
- ฟอรัมอย่างเป็นทางการ - Tasker: เรียกใช้งานจากบรรทัดคำสั่งและส่งตัวแปรและ / หรือข้อมูลไปยังมัน
- 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 - เป็น "task_name" "lol" - เป็น "varNames" '{"arg1"}' - เป็น "varValues" '{"เวลา "}' adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - เป็น "varNames" '{"par1"}' - เป็น "varValues" '{"เวลา "}' adb shell su -c am Broadcast -a net.dinglisch.android.tasker.ACTION_TASK - เป็น "task_name" "lol" - เป็น "varNames" '{"par1" \, "arg1"}' --es "varValues "'{" ได้รับ "\," อีกครั้ง "}'
ฉันได้แปลงเจตนาเป็น 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 เป็นพื้นที่ทดสอบ