[干货]HarmonyOS 鸿蒙Next want传参的应用

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

[干货]HarmonyOS 鸿蒙Next want传参的应用 多用于 微信支付/支付宝支付

拉起一个新的ability的一些载体

want传参就是 你支付的时候 需要传订单号 需要传花了多少钱

//传参的ability'
const context = getContext() as common.UIAbilityContext
const res = await context.startAbilityForResult({
  abilityName:'SecondAbility',
  bundleName:'com.itheima.myapplication',
  parameters:{
    "order_id":Date.now(),
    "price":~~(Math.random() * 1000)
    //~~向下取整
    //??逻辑空运算
    //!!强制转换成为布尔值
  }
})
if (res.want?.parameters && res.want.parameters["paySuccess"]) {
  promptAction.showToast({message:'支付成功'})
}
//接收want传参的ability  让他还回去
const context = getContext() as common.UIAbilityContext
context.terminateSelfWithResult(
  {
    resultCode:0,
    want:{
      abilityName:'EntryAbility',
      bundleName:'com.itheima.myapplication',
      parameters:{
        paySuccess:true
      }
    }
  }
)

在页面创建的时候存到Appstorage里面

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  const obj = want.parameters
  if (obj) {
    AppStorage.setOrCreate("order_id",obj["order_id"])
    AppStorage.setOrCreate("price",obj["price"])
  }
}

因为页面只能创建一次 所以我们要在下面创建一个钩子函数 onNewwant

onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  const obj = want.parameters

  if (obj) {

    AppStorage.setOrCreate("order_id",obj["order_id"])

    AppStorage.setOrCreate("price",obj["price"])

  }
}

更多关于[干货]HarmonyOS 鸿蒙Next want传参的应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

感谢分享

更多关于[干货]HarmonyOS 鸿蒙Next want传参的应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢分享。

在HarmonyOS(鸿蒙)系统中,want 机制是实现应用间通信和数据传递的核心方式之一。want 类似于Android中的Intent,用于描述一个动作或数据请求,并可以在不同应用组件或服务间传递。

在鸿蒙Next版本的want传参应用中,开发者可以通过构建Want对象来指定目标应用、组件(如Ability)、动作(Action)、数据(Data URI)、类别(Category)、参数(Parameters)等。这些参数在发送方构建Want时设置,接收方在接收到Want后解析使用。

具体实现中,发送方会创建一个Want实例,并通过setElement方法指定目标Ability,通过setActionsetDataaddCategory等方法设置动作、数据URI和类别,通过putStringputInt等方法添加自定义参数。然后,通过调用startAbility方法发送Want,触发目标Ability的启动和参数接收。

接收方Ability在onConnectonStart等生命周期方法中,通过getIntent()方法获取到传入的Want对象,再调用getStringgetInt等方法解析出需要的参数。

如果在使用want传参过程中遇到问题,如参数传递不正确、接收方无法解析等,建议检查Want对象的构建和解析过程,确保参数名和类型的一致性。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部