मैंने वनप्लस वन को रूटीन Cyanogen OS 12 और Tasker v4.8 के साथ रखा है । मैं पीसी में एक bash स्क्रिप्ट जो बाहर निकलने पर एक टास्कर के कार्य को निष्पादित करने की आवश्यकता होती है। मैं सवाल देखा है SSHDroid (या adb शेल) के माध्यम से एक tasker कार्य चल रहा है और हालांकि स्वीकार किए जाते हैं जवाब मेरे 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
।
# केवल प्रदर्शन के लिए, मैंने "लोल" नाम का एक कार्य बनाया adb शेल su -c am-ब्रॉडकास्ट -a netlding.android.tasker.ACTION_TASK --es "task_name" "lol" --es "varNames" "par1" --es "varValues" "प्राप्त" adb शेल su -c am-ब्रॉडकास्ट-netlding.android.tasker.ACTION_TASK --es "task_name" "lol" --es "varNames" "% par1" --es "varValues" "प्राप्त" adb shell su -c am प्रसारण -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol" --es "varNames" "Par1" --es "varValues" "प्राप्त" # मैंने भी बदल दिया है कार्य में चर नाम par1 से Par1 adb shell su -c am-प्रसारण am-netlding.android.tasker.ACTION_TASK --es "task_name" "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
लेकिन कार्य को सीधे कॉल करना और फिर चर मान भेजना कुछ भी नहीं करता है।
तो, मेरे दृष्टिकोण में गलती कहां है और / या मैं केवल कमांड-लाइन का उपयोग करके किसी कार्य में चर मूल्य में कैसे भेजूं और प्राप्त करूं?
ध्यान दें कि मैं वर्कअराउंड की तलाश नहीं कर रहा हूं। मैं डिवाइस पर अपनी स्क्रिप्ट से बाहर निकलने की स्थिति प्राप्त करने के लिए कई वर्कअराउंड के साथ आने में सक्षम हूं, लेकिन इरादे का उपयोग उनमें से सबसे सीधा समाधान प्रतीत होता है और मैं इस तकनीक को भी सीखना चाहता हूं।
अपडेट करें
मैंने अपनी क्वेरी को यहां उठाया:
- आधिकारिक फ़ोरम - टास्कर: कमांड-लाइन से किसी कार्य को आमंत्रित करें और इसके लिए चर (ओं) और / या डेटा को पास करें
- सबरेडिट टास्कर: क्या कमांड-लाइन से किसी कार्य को करने पर चर को पारित किया जा सकता है?
- निजी तौर पर टेशर के डेवलपर, जो ईमेल का उपयोग कर रहे हैं
मुझे यह उत्तर पेंट से, ईमेल और फ़ोरम दोनों के माध्यम से मिला
आप -b के साथ एक कॉल करने के लिए StringArrayList अतिरिक्त जोड़ने के लिए सक्षम होना होगा -e, पता नहीं अगर adb कर सकते हैं कि।
यदि हां, तो प्रारूप को देखने के लिए आप टास्करइंटेंट.जवा को देख सकते हैं। http://tasker.dinglisch.net/code/TaskerIntent.java , फ़ंक्शन addLocalVariable, यदि आप जावा को समझते हैं।
और यह वही है जो मैंने बाद में इस सवाल को पोस्ट करने के बाद पाया।
यहाँ उत्तर के अनुसार , मेरा मानना है कि एक स्ट्रिंग सरणी को अदब का उपयोग करके पारित किया जा सकता है। इसलिए मैंने कुछ प्रश्नों का प्रयास किया, लेकिन फिर से एक मृत अंत मिला।
adb shell su -c am-प्रसारण am-netlding.android.tasker.ACTION_TASK --es "task_name" "lol" --es "varNames" '{"arg1"} "--es" varValues "{" time "} ' adb shell su -c am-प्रसारण am-netlding.android.tasker.ACTION_TASK --es "task_name" "lol" --es "varNames" '{"par1"}' --es 'varValues "{" time "} ' adb shell su -c am प्रसारण -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol" --es "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
आप परीक्षण ग्राउंड के रूप में स्टॉक एंड्रॉइड 6.0.1 का उपयोग कर सकते हैं।