当前位置: 首页 > 知识库问答 >
问题:

harmonyos - 源端设备的onContinue应该怎么写?

薄龙光
2024-04-02

A设备利用startAbility拉起B设备的UIAbility时,A设备page里的代码如下:

let bundleFlag = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_HAP_MODULE         let bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleFlag)         let want: Want = {            deviceId: AppStorage.get('selectDeviceId') as string,            bundleName: bundleInfo.name,            moduleName: bundleInfo.hapModulesInfo[0].name,            abilityName: 'EntryAbility',            parameters: { selectMusicIndex: AppStorage.get('selectMusicIndex') as number }         }         hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(want.deviceId))         hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(want.bundleName))         hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(want.moduleName))         hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(want.abilityName))         hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(want.parameters))         let context = getContext(this) as common.UIAbilityContext         context.startAbility(want)            .then(() => hilog.debug(0x0001, 'RemoteDeviceManager_send', 'send success'))            .catch((error: BusinessError) => hilog.debug(0x0001, 'RemoteDeviceManager_send', JSON.stringify(error)))

A设备UIAbility的onContinue如下:

onContinue(wantParam: Record<string, number>): AbilityConstant.OnContinueResult {      //      return AbilityConstant.OnContinueResult.AGREE   }

我在startAbility时已经保存了参数,onContinue里还需要保存吗?如果需要,应该怎么写才能保存参数?

目前onContinue还没写,A设备startAbility时会报错,错误码401,官网文档错误码链接:通用错误码401

共有1个答案

小牛23052
2024-04-02

从你的问题描述来看,你正在使用OpenHarmony的Ability系统,并在尝试从设备A启动设备B的一个UIAbility。同时,你在A设备的UIAbility中定义了onContinue方法,但不确定是否需要在其中保存参数,以及如何保存。

错误码401通常表示参数检查失败。这可能是因为onContinue方法定义的参数与期望的不匹配。

在OpenHarmony的Ability系统中,onContinue方法用于在Ability被继续时获取之前保存的数据。通常,这个方法会在你的Ability被系统回收后,当用户再次回到这个Ability时被调用。

在你的代码中,startAbility方法中的want对象包含了一些参数,如selectMusicIndex。如果你想在onContinue中获取这些参数,你需要修改onContinue方法的定义,使其能够接收这些参数。

此外,onContinue方法应该返回一个AbilityConstant.OnContinueResult枚举值,表示是否同意继续这个Ability。

下面是一个修改后的onContinue方法的示例,它可以接收并保存wantParam中的参数:

onContinue(wantParam: Want): AbilityConstant.OnContinueResult {    // 保存wantParam中的参数    this.selectMusicIndex = wantParam.parameters?.selectMusicIndex;    // 返回AGREE表示同意继续这个Ability    return AbilityConstant.OnContinueResult.AGREE;}

在这个示例中,我假设selectMusicIndex是你想要保存的参数,并且你的类有一个名为selectMusicIndex的属性来保存这个值。你需要根据你的实际情况来修改这个代码。

请注意,onContinue方法在被调用时,会传入一个Want对象,这个对象包含了启动这个Ability时所使用的所有参数。因此,你可以从这个对象中获取你需要的参数。

最后,如果你的onContinue方法定义正确,但仍然收到错误码401,那么可能是其他原因导致的。你可能需要进一步检查你的代码,或者查看OpenHarmony的官方文档和社区,以获取更多的帮助。

 类似资料:
  • 安装DevEco Studio后。我必须设置一个新项目,但是,显示以下错误 这里我无法设置HarmonyOS的SDK位置,如何设置SDK位置?

  • 我需要自定义web应用程序,无论它是在笔记本电脑还是手机上使用,发现ios或android检测,所以如果我只是这样做,它会工作吗 下面的解决方案解决方案给了我一个错误,但是这个包帮助了我: https://pub.dev/packages/universal_io 或者

  • 目前用的是harmonyOS4.0版本,遇到了panel的高度问题,点击panel外的区域也会拖动panel的大小,需求是拖动panel外的区域不会影响panel,而是正常的页面滑动(类似一些著名听书软件的功能),一直没有一个完美的解决方案,期待大佬解惑 尝试过onChange或onHeight事件 高度随mode改变而改变,结果是失败的

  • 场景是这样的,我们的单据新建页点击提交按钮后,拿到单据ID,然后根据单据ID触发工作流初始化接口获取到工作流人员信息。问题在于,点击提交后,该怎么展示选人比较好,一个弹框?或者在原有页面下新增选人信息?更或者关闭当前页,在另一个页面弹框选人?想听听各位的想法,你们业务上是怎么做的。

  • 多模块应用使用 startAbility 报错