किसी कार्य में चर मान कैसे भेजें और प्राप्त करें?


9

मैंने वनप्लस वन को रूटीन 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 का उपयोग कर सकते हैं।


मुझे लगता है कि मुझे स्ट्रिंग सरणियों को पारित करने की आवश्यकता है और मुझे नहीं पता कि मुझे कैसे आगे बढ़ना है।
Firelord

यकीन नहीं है कि अगर इस अधिकार को पढ़ते हुए, आपके पास एक अदद स्क्रिप्ट है, जब समाप्त हो गई है, तो टास्कर में किसी कार्य के लिए चर को सही तरीके से पास करना होगा? लेकिन टास्क में कार्य इस चर को पुनर्जीवित नहीं कर रहा है, और आप चाहते हैं कि यह चर प्राप्त करे। क्या मैं सही रास्ते पर हूँ?
मत्ती

यह एक बैश स्क्रिप्ट है, लेकिन हाँ, अंत में मैं एडीबी का उपयोग करके एक कार्य को कॉल करना चाहता हूं और इसे एक चर भेजना चाहता हूं।
Firelord

ठीक है, अगर मुझे कोई उपयोगी जानकारी मिलती है, और शुभकामनाएँ
Matt07211

कृपया मुझे माफ करना अगर मैं बेवकूफ लग रहा हूँ - क्योंकि आप स्पष्ट रूप से मुझसे अधिक टास्कर में उन्नत हैं - लेकिन क्या आप बस बाहर निकलने से पहले एक पाठ फ़ाइल के लिए चर डेटा लिखने के लिए अपनी स्क्रिप्ट नहीं बना सकते हैं और फिर टस्कर को कुछ शर्तों पर उस फ़ाइल को पढ़ने दें और सेट करें इससे चर?
शुद्ध।

जवाबों:


1

@ फायरलॉर्ड के निष्कर्षों और amइन-ऐप दस्तावेज़ (आउटपुट am, कोई arg) के आधार पर। यह मेरे फोन पर 6.0.1 चल रहा है:

$ su -c 'am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es task_name TASK_NAME --esal varNames %VAR_NAME1,%VAR_NAME2 --esal varValues VAR_VALUE1,VAR_VALUE2'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.