[干货]HarmonyOS 鸿蒙Next want传参的应用
[干货]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
感谢分享。
在HarmonyOS(鸿蒙)系统中,want
机制是实现应用间通信和数据传递的核心方式之一。want
类似于Android中的Intent,用于描述一个动作或数据请求,并可以在不同应用组件或服务间传递。
在鸿蒙Next版本的want传参应用中,开发者可以通过构建Want
对象来指定目标应用、组件(如Ability)、动作(Action)、数据(Data URI)、类别(Category)、参数(Parameters)等。这些参数在发送方构建Want
时设置,接收方在接收到Want
后解析使用。
具体实现中,发送方会创建一个Want
实例,并通过setElement
方法指定目标Ability,通过setAction
、setData
、addCategory
等方法设置动作、数据URI和类别,通过putString
、putInt
等方法添加自定义参数。然后,通过调用startAbility
方法发送Want
,触发目标Ability的启动和参数接收。
接收方Ability在onConnect
或onStart
等生命周期方法中,通过getIntent()
方法获取到传入的Want
对象,再调用getString
、getInt
等方法解析出需要的参数。
如果在使用want传参过程中遇到问题,如参数传递不正确、接收方无法解析等,建议检查Want
对象的构建和解析过程,确保参数名和类型的一致性。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,