কোনও কার্যে একটি পরিবর্তনশীল মান কীভাবে প্রেরণ করা এবং তা গ্রহণ করা যায়?


9

আমি মূলযুক্ত সায়ানোজেন ওএস 12 এবং টাস্কার ভি 4.8 সহ একটি ওয়ানপ্লাস ওয়ান করেছি । আমার পিসিতে একটি বাশ স্ক্রিপ্ট রয়েছে যা প্রস্থান করার সময় টাস্কারের কার্য সম্পাদন করা প্রয়োজন। আমি প্রশ্নটি দেখেছি এসএসএইচড্রয়েড (বা অ্যাডবি শেল) এর মাধ্যমে একটি টাস্কর টাস্ক চালানো এবং যদিও স্বীকৃত উত্তরটি আমার অ্যান্ড্রয়েডে কাজ করে না, সমাধানটি খুব সহজ। কোনও কার্য কল করতে, করুন:

adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "TASK_NAME"   

তবে, আমি সফলভাবে এটি করতে পারি। প্রস্থান করার সময়, আমার স্ক্রিপ্টটির প্রস্থান স্থিতিটি টাস্কে পাস করা দরকার যাতে আমি স্ক্রিপ্টের ফলাফলের ভিত্তিতে ডিভাইসে আমার প্রসেসিং চালিয়ে যেতে পারি।

Invoking কাজের জন্য সরকারী নির্দেশিকা , প্রোগ্রামারদের জন্য বোঝানো হয়, যাতে আমাকে সাহায্য করল না। ইনডেন্টের মাধ্যমে থ্রেড লঞ্চটি টাস্কের মাধ্যমে আমি একটি ভেরিয়েবলের মান পাস করার জন্য বিভিন্ন উপায়ে চেষ্টা করেছি, কিন্তু কোন ফলসই হয়নি।

আমরা যখন অন্য কোন কাজ থেকে কোনও কাজকে ডাকি তখন দুটি ভেরিয়েবল ব্যবহার করে মানগুলি পাস করার জন্য আমাদের নমনীয়তা দেওয়া হয়। নাম %par1এবং ব্যবহার করে চালিত টাস্কটি দ্বারা এই দুটি ভেরিয়েবল গ্রহণ করা যেতে পারে %par2। আমার ডেমো কাজের, সব আমি করছি সতর্কতা → ফ্ল্যাশ → পাঠ্য → হয় Show me: %arg1 %par1

# শুধুমাত্র প্রদর্শনের জন্য, আমি "লোল" নামে একটি কার্য তৈরি করেছি

adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "কার্য_নাম" "lol" --es "varNames" "par1" --es "varValues" "প্রাপ্ত"
adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "টাস্ক_নাম" "lol" --es "varNames" "% par1" --es "varValues" "প্রাপ্ত"
adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "কার্য_নাম" "lol" --es "varNames" "পার 1" --es "varValues" "প্রাপ্ত" # আমিও পরিবর্তন করেছি কার্যে পরিবর্তনশীল নাম par1 থেকে Par1 to
adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "কার্য_নাম" "lol" --es "বর্ণনাম" "% 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

তবে সরাসরি কাজটি কল করা এবং তারপরে ভেরিয়েবলের মান পাঠানো কোনও কাজ করে না।

সুতরাং, আমার পদ্ধতির দোষ কোথায় এবং / অথবা আমি কেবল কোনও কমান্ড-লাইন ব্যবহার করে কোনও কার্যের একটি পরিবর্তনশীল মানতে কীভাবে প্রেরণ এবং গ্রহণ করব ?

নোট করুন যে আমি কোনও কাজের সন্ধান করছি না। আমি আমার স্ক্রিপ্ট থেকে ডিভাইসে প্রস্থান স্থিতি পাওয়ার জন্য অনেক কার্যকারিতা নিয়ে আসতে সক্ষম হয়েছি, তবে অভিপ্রায় ব্যবহার করা এগুলির মধ্যে সর্বাধিক সরল সমাধান বলে মনে হয় এবং আমিও এই কৌশলটি শিখতে চাই।

হালনাগাদ

আমি আমার জিজ্ঞাসা এখানে উত্থাপন:

আমি এই উত্তর ইমেল এবং ফোরামে উভয়ই পেন্টের কাছ থেকে পেয়েছি

আপনাকে স্ট্রিংআরলিলিস্টকে অতিরিক্ত বিজ্ঞাপন সংযোগের সাথে যুক্ত করতে সক্ষম করতে হবে, আপনি জানেন না যে অ্যাডবি এটি করতে পারে কিনা।

যদি তা হয় তবে ফর্ম্যাটটি দেখতে আপনি জাভা বুঝতে পারলে আপনি TaskerIntent.java http://tasker.dinglisch.net/code/TaskerIntent.java , ফাংশন অ্যাডলোক্যাল ভারিটেবল দেখতে পারেন।

এবং এই পরে আমি এই প্রশ্ন পোস্ট করার পরে surmised

এখানে উত্তর প্রতি , আমি বিশ্বাস করি একটি স্ট্রিং অ্যারে adb ব্যবহার করে পাস করা যেতে পারে। তাই আমি কিছু অনুসন্ধানের চেষ্টা করেছি কিন্তু আবার একটি মৃত পরিণতি পেলাম।

adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "কার্য_নাম" "" LOL "--es" বর্ণনাম "" {"আরগ 1"} '--es "varValues"' {"সময় "} '
adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "কার্য_নাম" "" LOL "--es" বর্ণনাম "" {"par1"} '--es "varValues"' {"সময় "} '
adb শেল su -c am সম্প্রচার -a net.dinglisch.android.tasker.ACTION_TASK - - "টাস্ক_নাম" "লোল" --es "বর্ণনাম" "{" par1 "\," আরগ 1 "} '--es" ভ্যারভ্যালু "'{" "\," আবার "}' পেয়েছে

আমি অভিপ্রায়টি ইউআরআই ব্যবহার করে রূপান্তর করেছিলাম এবং am to-intent-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 একটি পরীক্ষার ভিত্তি হিসাবে ব্যবহার করতে পারেন।


আমি ভাবতে শুরু করেছি যে স্ট্রিং অ্যারেগুলি পাস করতে হবে এবং কীভাবে এটি এগিয়ে যেতে হবে তা আমার কোনও ধারণা নেই।
ফায়ারল্যান্ড

এই অধিকারটি পড়লে নিশ্চিত না, আপনার একটি এডবি স্ক্রিপ্ট রয়েছে, শেষ হয়ে গেলে, টাস্কারের সঠিক কোনও কার্যে একটি ভেরিয়েবলটি পাস করতে হবে? তবে টাস্কারে টাস্কটি এই পরিবর্তনশীলটিকে পুনরুদ্ধার করছে না এবং আপনি চান যে এটি পরিবর্তনশীলটি গ্রহণ করবে receive আমি কি সঠিক ট্র্যাকে আছি?
Matt07211

এটি বাশ স্ক্রিপ্ট, তবে হ্যাঁ, শেষে আমি অ্যাডবি ব্যবহার করে কোনও টাস্ক কল করতে এবং এটিতে একটি ভেরিয়েবল প্রেরণ করতে চাই।
ফায়ারলর্ড

ঠিক আছে, আমি যদি কোনও পাই তবে কোনও দরকারী তথ্য পোস্ট করব এবং শুভকামনা
Matt07211

দয়া করে আমাকে ক্ষমা করুন যদি আমি নির্বোধ বলে মনে করি - কারণ আপনি আমার চেয়ে স্পষ্টতই টাস্কারে আরও উন্নত - তবে আপনি সহজেই প্রস্থান করার আগে আপনার স্ক্রিপ্টটিকে কোনও পাঠ্য ফাইলে ভেরিয়েবল ডেটা লিখতে পারেননি এবং তারপরে টাস্কার সেই ফাইলটি নির্দিষ্ট শর্তে পড়তে এবং সেট করতে পারেন এটি থেকে পরিবর্তনশীল?
খাঁটি।

উত্তর:


1

@ ফায়ারলর্ডের অনুসন্ধানগুলি এবং amঅ্যাপ্লিকেশনটিতে থাকা নথির উপর ভিত্তি করে (আউটপুট am, কোনও আর্গ আউট) নেই। এটি আমার ফোনে চলমান 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'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.