欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 鸿蒙服务卡片

鸿蒙服务卡片

2025/2/26 3:53:15 来源:https://blog.csdn.net/2301_80345482/article/details/144815052  浏览:    关键词:鸿蒙服务卡片

卡片特点:

  1. 卡片可以承载少量的内容显示和交互

  2. 卡片可以充当元服务的入口,点击卡片可以唤起元服务

服务卡片-应用双向通信

 卡片 => 应用

使用postCardAction方法

@Entry
@Component
struct MainPic {@Statenum: number = 0build() {Column({ space: 10 }) {Row({ space: 10 }) {Button("-").onClick(() => {this.num && this.num--})Text(this.num.toString()).fontSize(20)Button("+").onClick(() => {this.num++})}.width('100%').justifyContent(FlexAlign.Center)}.width('100%').height("100%").justifyContent(FlexAlign.Center)}
}

点击卡片唤起应用

.onClick(() => {postCardAction(this, {action: 'router',abilityName: 'EntryAbility',})})

加1减1传递当前的数字

@Entry
@Component
struct Count {@Statenum: number = 0build() {Row({ space: 10 }) {Button("-").onClick(() => {if(this.num)this.num--postCardAction(this, {action: 'call',abilityName: 'EntryAbility', // 只能跳转到当前应用下的UIAbilityparams: {// 使用call方式 需要第二个参数method: 'updateNum', // 名字必须叫method method的值是在ability中监听的方法名num: this.num}})})Text(this.num.toString()).fontSize(20)Button("+").onClick(() => {this.num++postCardAction(this, {action: 'call',abilityName: 'EntryAbility', // 只能跳转到当前应用下的UIAbilityparams: {method: 'updateNum', // 名字必须叫method method的值是在ability中监听的方法名num: this.num}})})}.width("100%").height("100%").justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center).onClick(() => {postCardAction(this, {action: 'router',abilityName: 'EntryAbility'})})}
}

请注意,如果使用call方式传递调用,需要开启一个后台权限-保持应用在后台

 "requestPermissions": [{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"}],

在ability的onCreate采用callee接收调用方法

callee方法的第一个参数为调用方法名,第二个参数必须返回一个实现rpc.Parcelable的实现类对象

定义一个Params的参数对象

import rpc from '@ohos.rpc';
class Params implements rpc.Parcelable {marshalling(messageSequence: rpc.MessageSequence): boolean {return true;}unmarshalling(messageSequence: rpc.MessageSequence): boolean {return true;}
}

在ability中监听callee调用的方法

// 声明一个接收参数的对象
class CardParams {num: number = 0
}
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.callee.on("updateNum", (data) => {const res = JSON.parse(data.readString()) as CardParamsAppStorage.setOrCreate("num", res.num)return new Params()})}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词