나는 Cyanogen OS 12와 Tasker v4.8 을 기반으로 한 OnePlus One을 가지고 있습니다. 종료 할 때 Tasker의 작업을 실행 해야하는 PC에 bash 스크립트가 있습니다. SSHDroid (또는 adb shell)를 통해 tasker task 실행이라는 질문 을 보았지만 허용 된 답변이 Android에서 작동하지 않지만 해결책은 매우 간단합니다. 작업을 호출하려면 다음을 수행하십시오.
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "TASK_NAME"
그러나 이것이 내가 할 수있는 전부입니다. 종료하는 동안 스크립트 결과에 따라 장치에서 처리를 계속할 수 있도록 스크립트가 종료 상태를 작업으로 전달해야합니다.
호출 작업을위한 공식 가이드는 그 날을 도움이되지 않았다, 그래서 프로그래머를위한 것입니다. 스레드 당 를 통해 인 텐트를 통한 작업 실행 변수 값을 전달하는 다양한 방법을 시도했지만 아무 소용이 없습니다.
다른 작업에서 작업을 호출하면 두 변수를 사용하여 값을 전달할 수있는 유연성이 제공됩니다. 이 두 변수는 이름 %par1
및을 사용하여 호출 된 태스크에서 수신 할 수 있습니다 %par2
. 데모 작업에서 내가하고있는 일은 Alert → Flash → Text → Show me: %arg1 %par1
입니다.
# 데모 용으로 "lol"이라는 작업을 만들었습니다. adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol"--es "varNames" "par1"--es "varValues" "수신 됨" adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol"--es "varNames" "% par1"--es "varValues" "수신 됨" adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol"--es "varNames" "Par1"--es "varValues" "수신"# 또한 변경됨 작업에서 변수 이름 par1 ~ Par1 adb shell su -c am broadcast -a net.dinglisch.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
그러나 작업을 직접 호출 한 다음 변수 값을 전송해도 아무런 효과가 없습니다.
따라서 내 접근 방식의 결함은 어디에 있습니까? 및 / 또는 명령 줄을 사용하여 작업에서 변수 값으로 보내고받는 방법은 무엇입니까?
참고 내가 해결 방법을 찾고 아니에요. 장치의 스크립트에서 종료 상태를 수신하는 많은 해결 방법을 완벽하게 제시 할 수는 있지만 의도를 사용하는 것이 가장 간단한 해결책 인 것처럼 보이며이 기술도 배우고 싶습니다.
최신 정보
나는 다음과 같은 질문을 제기했다.
- 공식 포럼-Tasker : 명령 줄에서 작업을 호출하고 변수 및 / 또는 데이터를 전달
- subreddit Tasker : 작업을 명령 줄에서 호출 할 때 변수를 전달할 수 있습니까?
- 전자 메일을 사용하여 Tasker 개발자 인 Pent에게 비공개로
이 답변은 Pent로부터 이메일과 포럼을 통해 받았습니다.
-e를 사용하여 adb 호출에 추가로 StringArrayList를 추가 할 수 있어야합니다. adb가이를 수행 할 수 있는지 모릅니다.
그렇다면 형식을 보려면 java를 이해하는 경우 addLocalVariable 함수 인 TaskerIntent.java http://tasker.dinglisch.net/code/TaskerIntent.java를 볼 수 있습니다 .
이것이 바로이 질문을 게시 한 후 나중에 예상 했던 것 입니다.
여기에 대한 답변 에 따라 adb를 사용하여 문자열 배열을 전달할 수 있다고 생각합니다. 그래서 몇 가지 쿼리를 시도했지만 다시 막 다른 골목을 만났습니다.
adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol"--es "varNames" '{ "arg1"}'--es "varValues" '{ "시간 "} ' adb shell su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "lol"--es "varNames" '{ "par1"}'--es "varValues" '{ "시간 "} ' adb shell su -c am broadcast -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
재고 Android 6.0.1을 테스트 장소로 사용할 수 있습니다.