鸿蒙(HarmonyOS)-Fa应用【Js卡片】启动一个指定的Ability

因为在写这篇文章时,鸿蒙的Fa卡片还处于开发内测阶段,所以并没有相关的官方文档,然后也就不多解释了,直接撸代码。

使用actions,其中routerEvent和messageEvent最大区别显而易见了,bundleName、abilityName两个参数的区别。适用方法是一样的,都是在hml文件中使用@click去调用。
routerEvent指定了bundleName、abilityName,机会传值给对应的ability同时拉起。
messageEvent则直接给卡片对应的默认ability发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); //- 接收值转Zson对象
      System.out.println(Data.getString("pageName")); //- 打印接收值,pageName是卡片Js示例中的params中的pageName
}
  • Ability示例(messageEvent)
    注意哦,这次不是在onStart方法里 了.
//- 这里是卡片默认的ability,不需要指定
@Override
protected void onTriggerFormEvent(long formId, String message) {
    System.out.println("点击Card:"+formId + "|" + message); //- 非常简单,这个方法直接就能接收到点击

    ZSONObject zsonObject = new ZSONObject(); //- 初始化一个新对象(这一行属于赠送内容哈哈哈哈)
    zsonObject.put("Title", "我是一个新的值噗"); //- 给对象添加值(这一行属于赠送内容哈哈哈哈)
    FormBindingData formBindingData = new FormBindingData(zsonObject);//- 讲对象绑定到Form(这一行属于赠送内容哈哈哈哈)
    try {
        if (!updateForm(formId, formBindingData)) {}//- 使用updateForm更新桌面上的卡片信息(这一行属于赠送内容哈哈哈哈)
    } catch (FormException e) {
        e.printStackTrace();
    }



    super.onTriggerFormEvent(formId, message); 
}

关于Js传值给Ability接收参数,本文中的intent.getStringParam("params");暂时仅适用本文的案例,关于JS页面传值给Java层的案例,请参考《鸿蒙(HarmonyOS)-Fa应用【Js页面】启动一个指定的Ability(分布式拉起)》

你可能感兴趣的:(鸿蒙(HarmonyOS)-Fa应用【Js卡片】启动一个指定的Ability)