OpenHarmony靜態(tài)訂閱應(yīng)用
??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??
OpenHarmony靜態(tài)訂閱應(yīng)用
1、簡(jiǎn)介
本文將介紹如何使用靜態(tài)訂閱公共事件,靜態(tài)訂閱者在未接收訂閱的目標(biāo)事件時(shí),處于未拉起狀態(tài),當(dāng)系統(tǒng)或應(yīng)用發(fā)布了指定的公共事件后,靜態(tài)訂閱者將被拉起,并執(zhí)行onReceiveEvent回調(diào),開發(fā)者可通過(guò)在onReceiveEvent回調(diào)中執(zhí)行業(yè)務(wù)邏輯,實(shí)現(xiàn)當(dāng)應(yīng)用接收到特定公共事件時(shí)執(zhí)行業(yè)務(wù)邏輯的目的。例如,某應(yīng)用希望在設(shè)備開機(jī)的時(shí)候執(zhí)行一些初始化任務(wù),那么該應(yīng)用可以靜態(tài)訂閱開機(jī)事件,在收到開機(jī)事件后會(huì)拉起該應(yīng)用,然后執(zhí)行初始化任務(wù)。
2、設(shè)備與環(huán)境
- 設(shè)備:九聯(lián)s905l3a機(jī)頂盒
- 系統(tǒng):OpenHarmony 3.2 beta2
- SDK:API 9(Full SDK)
3、實(shí)現(xiàn)過(guò)程
(1)聲明靜態(tài)訂閱者
打開 DevEco Studio 創(chuàng)建一個(gè)新的Stage工程,在工程中新建一個(gè)目錄 StaticSubscriber,然后在該目錄下面新建一個(gè)ExtensionAbility的ets文件,并讓該 ExtensionAbility 從 StaticSubscriberExtensionAbility 派生。
我們可以在 onReceiveEvent(event){ } 中實(shí)現(xiàn)自己的業(yè)務(wù)邏輯,在這里我們實(shí)現(xiàn)通過(guò)訂閱開機(jī)公共事件,來(lái)啟動(dòng)定時(shí)器,在日志中打印信息。
(2)靜態(tài)訂閱者工程配置
在完成靜態(tài)訂閱者的代碼實(shí)現(xiàn)后,需要將該訂閱者配置到系統(tǒng)的module.json5中,配置形式如下:
上述json文件主要關(guān)注以下字段:
- srcEntrance : 表示ExtensionAbility的入口文件路徑,即步驟2中聲明的靜態(tài)訂閱者所在的文件路徑,也就是我們剛剛創(chuàng)建的目錄文件
- type: 表示ExtensionAbility的類型,對(duì)于靜態(tài)訂閱者需要聲明為“staticSubscriber”
- metadata: 表示ExtensionAbility的二級(jí)配置文件信息。由于不同的ExtensionAbility類型其配置信息不盡相同,因此需要使用不同的config文件表示其具體配置信息。
- name:表示ExtensionAbility的類型名稱,對(duì)于靜態(tài)訂閱類型,name必須聲明為“ohos.extension.staticSubscriber”,否則無(wú)法識(shí)別為靜態(tài)訂閱者;
- resource: 字段表示ExtensionAbility的配置信息路徑,由開發(fā)者自行定義,在本例中表示路徑為“resources/base/profile/subscribe.json"。
metadata指向的二級(jí)配置文件的通常形式如下:
需要注意二級(jí)配置文件必須按照此形式進(jìn)行聲明,否則會(huì)無(wú)法正確識(shí)別。下面對(duì)字段進(jìn)行介紹:
- name: 靜態(tài)訂閱ExtensionAbility的名稱,需要和module.json5中聲明的ExtensionAbility的name一致。
- permission:訂閱者要求的發(fā)布者需要具備的權(quán)限,對(duì)于發(fā)布了目標(biāo)事件但不具備permission中聲明的權(quán)限的發(fā)布者將被視為非法事件不予發(fā)布。
- events: 訂閱的目標(biāo)事件列表。
在這里我監(jiān)聽的是開機(jī)事件和系統(tǒng)事件流逝時(shí)間:
不知道是不是系統(tǒng)bug,在permission字段添加權(quán)限的時(shí)候,會(huì)導(dǎo)致應(yīng)用無(wú)法成功啟動(dòng),使用就把權(quán)限去掉了。
(3)應(yīng)用安裝
首先,修改OpenHarmony SDK toolchains lib目錄下面的 UnsgnedReleasedProfileTemplate.json 文件的apl字段,將apl字段改成 system_basic 或 system_core。
? 然后,進(jìn)入905設(shè)備系統(tǒng),修改905設(shè)備系統(tǒng)配置文件,通過(guò) ??hdc file recv /etc/static_subscriber_config.json D:\?
? 命令將系統(tǒng)配置文件存放到電腦中,然后修改 static_subscriber_config.json 文件,在該文件中加入我們這個(gè)應(yīng)用的包名:
最后把修改好的配置文件重新加入到設(shè)備系統(tǒng)中:
然后重新啟動(dòng),應(yīng)用監(jiān)聽到開機(jī)事件,此時(shí)就可以在日志中看到打印:
4、參考文檔
文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載
https://ost.51cto.com/resource/2701。