HarmonyOS 鸿蒙Next 卡片服务跳转指定页

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

HarmonyOS 鸿蒙Next 卡片服务跳转指定页

元服务卡片怎么跳转到指定页。我用了Formlink,但是不知道url怎么配置

// router事件用于静态卡片deeplink跳转到对应的UIAbility
FormLink({
action: “router”,
uri: ‘example://uri.ohos.com/pages/remind/List’,
params: {
message: ‘router msg for static uri deeplink’ // 自定义要发送的message
}
});

module.json5
“abilities”: [
{
“skills”: [
{
“uris”: [
{
“scheme”: “example”,
“host”: “uri.ohos.com”,
“path”: “pages/remind/List”
},
]
}
],
}
]

path 对应我的元服务指定的界面。 pages/remind/List

2 回复

FormLink中uri与abilityName效果一致,都是跳转至应用的uiAbility,建议使用abilityName,通过配置相对应模块的abilityname,再对应的ability中通过判断FormLink传递的params跳转至某一个页面。可参考以下demo,

//WidgetCard.ets

[@Entry](/user/Entry)

[@Component](/user/Component)

struct WidgetCard {

  build() {

    FormLink({

      action: 'router',

      abilityName: 'EntryAbility',

      params: {

        message: 'PageB'

      }

    }) {

      Button('click')

    }.margin(10)

  }

}

//EntryAbility.ets

import { AbilityConstant, UIAbility, Want } from '[@kit](/user/kit).AbilityKit';

import { hilog } from '[@kit](/user/kit).PerformanceAnalysisKit';

import { window } from '[@kit](/user/kit).ArkUI';

const TAG: string = 'EntryAbility';

const DOMAIN_NUMBER: number = 0xFF00;

export default class EntryAbility extends UIAbility {

  private selectPage: string = '';

  private currentWindowStage: window.WindowStage | null = null;

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {

    hilog.info(DOMAIN_NUMBER, TAG, `Ability onCreate, ${JSON.stringify(want)}`);

    if (want.parameters !== undefined) {

      let params: Record<string, string> = JSON.parse(JSON.stringify(want.parameters));

      this.selectPage = params.targetPage;

    }

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

  }

  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {

    hilog.info(DOMAIN_NUMBER, TAG, `onNewWant Want: ${JSON.stringify(want)}`);

    if (want.parameters?.params !== undefined) {

      let params: Record<string, string> = JSON.parse(JSON.stringify(want.parameters));

      this.selectPage = JSON.parse(params.params).message

    }

    if (this.currentWindowStage !== null) {

      this.onWindowStageCreate(this.currentWindowStage);

    }

  }

  onDestroy(): void {

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');

  }

  onWindowStageCreate(windowStage: window.WindowStage): void {

    // Main window is created, set main page for this ability

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    let targetPage: string='pages/Index';

    if(this.selectPage=='PageB'){

      targetPage='pages/PageB'

    }

    if (this.currentWindowStage === null) {

      this.currentWindowStage = windowStage;

    }

    windowStage.loadContent(targetPage, (err) => {

      if (err.code) {

        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');

        return;

      }

      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');

    });

  }

  onWindowStageDestroy(): void {

    // Main window is destroyed, release UI related resources

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');

  }

  onForeground(): void {

    // Ability has brought to foreground

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');

  }

  onBackground(): void {

    // Ability has back to background

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');

  }

}

在HarmonyOS鸿蒙Next系统中,卡片服务跳转指定页面的功能是完全可行的。开发者可以通过配置卡片的属性以及编写相应的代码来实现这一功能。

首先,开发者需要在卡片的配置文件中指定相关属性,例如formConfigAbility,它指定了卡片触发时应该跳转的目标Ability。同时,开发者还需要在代码中处理卡片点击事件,通过Router机制将用户引导至指定的页面。

在具体实现时,开发者可以利用ArkTS或Java等开发语言来编写卡片服务的相关代码。在卡片被点击时,通过捕获点击事件并解析传递的参数,来决定应该跳转至哪个页面。

此外,为了确保卡片服务跳转指定页面的功能能够正常工作,开发者还需要注意以下几点:

  1. 确保目标页面已经正确配置在应用的Ability列表中。
  2. 确保卡片服务已经获得了必要的权限,例如访问网络、读写存储等。
  3. 在卡片首次创建时,可能需要通过延时机制来确保卡片Id能够正确传入。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部