Tasker 通過(guò)發(fā)送廣播 Intent 向 Autojs 傳遞數(shù)據(jù)

注:此方法適用于 Autojs 4.0.3 Alpha4 及以上版本概作,其他版本可通過(guò)該方法實(shí)現(xiàn)

前言

如果曾看過(guò)這文章的讀者溺蕉,應(yīng)該知道 Tasker 可以通過(guò)構(gòu)造 JavaScript 模塊文件向 Autojs 傳遞數(shù)據(jù),雖然該方法很方便與靈活,但其終歸依賴于文件的寫(xiě)入,間接地將數(shù)據(jù)傳遞給 Autojs僵腺。前幾天,Auto.js 開(kāi)發(fā)者 hyb1996 發(fā)布了 4.0.4Alpha6 版本壶栋,該版本新增了一個(gè)監(jiān)聽(tīng)廣播 Intent(意圖)的觸發(fā)條件辰如,當(dāng)中不僅內(nèi)置了多個(gè)系統(tǒng)常見(jiàn)的廣播 Intent,而且還允許用戶自定義贵试。讀到這里琉兜,我想熟悉 Android Intent 的讀者應(yīng)該能敏銳地察覺(jué)到 Tasker 向 Autojs 傳遞數(shù)據(jù)的另一種方法了,沒(méi)錯(cuò)毙玻,那就是 Tasker 向 Autojs 發(fā)送廣播 Intent豌蟋。接下來(lái),我將給大家講解該方法是如何實(shí)現(xiàn)的桑滩。

思路

首先編寫(xiě)好 Autojs 腳本梧疲,接著對(duì)其設(shè)置一個(gè)自定義的廣播 Intent 定時(shí)任務(wù),然后 Tasker 構(gòu)造該 Intent(可含附加數(shù)據(jù) extras)并發(fā)送出去施符。這樣當(dāng) Autojs 接收到由 Tasker 發(fā)送過(guò)來(lái)的 Intent 時(shí),便會(huì)執(zhí)行相應(yīng)的腳本(傳遞過(guò)來(lái)的附加數(shù)據(jù)可直接用于腳本)擂找。

具體實(shí)現(xiàn)步驟

一戳吝、編寫(xiě) Autojs 腳本

以下是接收到的廣播 Intent 對(duì)象的基本使用方法:

/**
* 假設(shè)接收到的廣播 Intent 內(nèi)容如下:
*
* action: com.autojs.intent.INTENT_RECEIVED_DEMO
* data: package:net.dinglisch.android.taskerm
* package: org.autojs.autojs
* extras:
*   from:Tasker
*   message:Hello Autojs
*
* 說(shuō)明:以上 intent 并非真實(shí)的格式,僅是為了令讀者知道該 intent 有哪些值
*/

/**
* 由廣播 Intent 觸發(fā)的腳本都可通過(guò)以下方法獲取到該廣播的 Intent 對(duì)象
* 需注意贯涎,該對(duì)象為 Android 的 Intent 對(duì)象听哭,需調(diào)用 Android 的 Intent 方法
*/
const intent = engines.myEngine().execArgv.intent;

const action = intent.action; // 讀取 action;同 intent.getAction()
const data = intent.data; // 讀取 data塘雳,返回 Java Uri 對(duì)象陆盘;同 intent.getData()
const package = intent.package; // 讀取 package;同 intent.getPackage()
const from = intent.getStringExtra('from'); // 讀取 extras 中的 from 值
const message = intent.getStringExtra('message'); // 讀取 extras 中的 message 值

console.log(action); // "com.autojs.intent.USER_DEFINED"
console.log(data); // "package:net.dinglisch.android.taskerm"
console.log(package); // "org.autojs.autojs"
console.log(from); // "Tasker"
console.log(message); // "Hello Autojs"

// 遍歷所有 extras 值(上面為單個(gè) extra 的讀劝苊鳌)
let o = {};
const extras = intent.extras;
if(extras) {
  let iter = extras.keySet().iterator();
  while(iter.hasNext()) {
    let key = iter.next();
    o[key] = extras.get(key);
  }
}
console.log(JSON.stringify(o)); // {"from":"Tasker","message":"Hello Autojs"}

// 其他實(shí)現(xiàn)代碼
// ...

更多 Android Intent 的方法隘马,請(qǐng)參閱 Intent#Public methods

二、在 Autojs 中自定義要觸發(fā)的廣播 Intent 定時(shí)任務(wù)(本步驟含有視頻妻顶,請(qǐng)點(diǎn)擊這里進(jìn)行查看)

三酸员、Tasker 發(fā)送廣播 Intent

在 Tasker 內(nèi)置的「發(fā)送意圖」動(dòng)作中構(gòu)造含 extras 附加數(shù)據(jù)的廣播,如下配置描述所示:

Send Intent [
  Action:
    com.autojs.intent.INTENT_RECEIVED_DEMO // 與上述二中自定義的廣播 Action 相同
  Cat:
    None
  Mime Type:
  Data:
  Extra:
    from:Tasker // 附加數(shù)據(jù):key="from", value="Tasker"
  Extra:
    message:Hello Autojs // 附加數(shù)據(jù):key="message", value="Hello Autojs"
  Extra:
  Package:
    org.autojs.autojs // 能夠接收此 Intent 的應(yīng)用包名讳嘱,若省略幔嗦,則任何注冊(cè)了該廣播 Intent 的應(yīng)用都可接收
  Class:
  Target:
    Broadcast Receiver // Intent 發(fā)送方式為 Broadcast,即廣播
]

注:
Mime Type 與 Data 項(xiàng)一般不填寫(xiě)沥潭,
因?yàn)槟壳?Autojs 所允許自定義的廣播 Intent 中的 Mime Type 與 Data 項(xiàng)都是省略的邀泉,
若填寫(xiě)了,則發(fā)送的廣播與 Autojs 注冊(cè)的廣播會(huì)不匹配,即 Autojs 將無(wú)法接收到該廣播 Intent

更多有關(guān) Tasker 發(fā)送意圖的內(nèi)容汇恤,請(qǐng)參閱本人翻譯的 Tasker 中文用戶指南意圖部分

實(shí)例

  1. 編寫(xiě) Autojs 腳本

  2. 為腳本設(shè)置定時(shí)任務(wù)

  3. Tasker 發(fā)送廣播 Intent

  4. 運(yùn)行

效果

比起通過(guò)構(gòu)造 JavaScript 模塊文件向 Autojs 傳遞數(shù)據(jù)的方法庞钢,本方法各方面都更優(yōu)勝。舊方法是間接傳遞數(shù)據(jù)屁置,本方法則是直接傳遞焊夸;而且,舊方法需要通過(guò) Tasker 插件(或發(fā)送帶有腳本文件路徑數(shù)據(jù)的 Activity Intent)執(zhí)行 Autojs 腳本蓝角,這比廣播觸發(fā)要慢阱穗。

更新日志

  • 10/30/2018
    - 發(fā)布

其他

作者:sung
郵箱:sdfsung@gmail.com

原創(chuàng)內(nèi)容,轉(zhuǎn)載請(qǐng)注明出處

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末使鹅,一起剝皮案震驚了整個(gè)濱河市揪阶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌患朱,老刑警劉巖鲁僚,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異裁厅,居然都是意外死亡冰沙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)执虹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拓挥,“玉大人,你說(shuō)我怎么就攤上這事袋励〗钠。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵茬故,是天一觀的道長(zhǎng)盖灸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)磺芭,這世上最難降的妖魔是什么赁炎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮钾腺,結(jié)果婚禮上甘邀,老公的妹妹穿的比我還像新娘。我一直安慰自己垮庐,他們只是感情好松邪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著哨查,像睡著了一般逗抑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天邮府,我揣著相機(jī)與錄音荧关,去河邊找鬼。 笑死褂傀,一個(gè)胖子當(dāng)著我的面吹牛忍啤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仙辟,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼同波,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了叠国?” 一聲冷哼從身側(cè)響起未檩,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粟焊,沒(méi)想到半個(gè)月后冤狡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡项棠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年悲雳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片香追。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡合瓢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翅阵,到底是詐尸還是另有隱情歪玲,我是刑警寧澤迁央,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布掷匠,位于F島的核電站,受9級(jí)特大地震影響岖圈,放射性物質(zhì)發(fā)生泄漏讹语。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一蜂科、第九天 我趴在偏房一處隱蔽的房頂上張望顽决。 院中可真熱鬧,春花似錦导匣、人聲如沸才菠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赋访。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚓耽,已是汗流浹背渠牲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留步悠,地道東北人签杈。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鼎兽,于是被迫代替她去往敵國(guó)和親答姥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容