因?yàn)樵趯戇@篇文章時(shí),鴻蒙的Fa卡片還處于開發(fā)內(nèi)測階段叠聋,所以并沒有相關(guān)的官方文檔撕阎,然后也就不多解釋了,直接擼代碼碌补。
使用actions虏束,其中routerEvent和messageEvent最大區(qū)別顯而易見了,bundleName厦章、abilityName兩個(gè)參數(shù)的區(qū)別镇匀。適用方法是一樣的,都是在hml文件中使用@click去調(diào)用袜啃。
routerEvent指定了bundleName汗侵、abilityName,機(jī)會傳值給對應(yīng)的ability同時(shí)拉起群发。
messageEvent則直接給卡片對應(yīng)的默認(rèn)ability發(fā)message消息晰韵。
- 卡片JS示例:
export default {
data: {
},
actions:{
routerEvent: {
action: "router",
bundleName: "cn.miao.miaofa",
abilityName: "cn.miao.miaofa.WebViewAbility",
params: {
message: "weather",
pageName: "blood_pressure"
}
},
messageEvent: {
action: "message",
params: {
message: "weather update"
}
}
}
}
- Ability示例(routerEvent)
//- WebViewAbility
@Override
public void onStart(Intent intent) {
String StrParams = intent.getStringParam("params"); //- 卡片傳過來的值
ZSONObject Data = ZSONObject.stringToZSON(StrParams); //- 接收值轉(zhuǎn)Zson對象
System.out.println(Data.getString("pageName")); //- 打印接收值,pageName是卡片Js示例中的params中的pageName
}
- Ability示例(messageEvent)
注意哦熟妓,這次不是在onStart方法里 了.
//- 這里是卡片默認(rèn)的ability雪猪,不需要指定
@Override
protected void onTriggerFormEvent(long formId, String message) {
System.out.println("點(diǎn)擊Card:"+formId + "|" + message); //- 非常簡單,這個(gè)方法直接就能接收到點(diǎn)擊
ZSONObject zsonObject = new ZSONObject(); //- 初始化一個(gè)新對象(這一行屬于贈送內(nèi)容哈哈哈哈)
zsonObject.put("Title", "我是一個(gè)新的值噗"); //- 給對象添加值(這一行屬于贈送內(nèi)容哈哈哈哈)
FormBindingData formBindingData = new FormBindingData(zsonObject);//- 講對象綁定到Form(這一行屬于贈送內(nèi)容哈哈哈哈)
try {
if (!updateForm(formId, formBindingData)) {}//- 使用updateForm更新桌面上的卡片信息(這一行屬于贈送內(nèi)容哈哈哈哈)
} catch (FormException e) {
e.printStackTrace();
}
super.onTriggerFormEvent(formId, message);
}
關(guān)于Js傳值給Ability接收參數(shù)起愈,本文中的intent.getStringParam("params");暫時(shí)僅適用本文的案例只恨,關(guān)于JS頁面?zhèn)髦到oJava層的案例,請參考《鴻蒙(HarmonyOS)-Fa應(yīng)用【Js頁面】啟動一個(gè)指定的Ability(分布式拉起)》