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