鸿蒙Next中如何实现uri跳转

在鸿蒙Next开发中,我想实现通过uri跳转到其他应用或页面,但不太清楚具体该怎么操作。请问应该如何配置uri以及调用跳转方法?能否提供一个完整的代码示例?

2 回复

鸿蒙Next里跳转URI?简单!用want对象配好uri,再让AbilityContextstartAbility()一推——搞定!记得检查权限,别让URI在半路被保安拦下哦~

更多关于鸿蒙Next中如何实现uri跳转的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,可以通过want对象实现URI跳转,支持应用内、跨应用或网页跳转。以下是具体实现方法:

1. 应用内页面跳转

import { router } from '@kit.ArkUI';

// 跳转到指定页面
router.pushUrl({
  url: 'pages/Detail'  // 目标页面路径
} as router.RouterOptions);

2. 跳转到其他应用

import { AbilityConstant, common, UIAbility } from '@kit.AbilityKit';

let wantInfo: Want = {
  bundleName: 'com.example.app',
  abilityName: 'EntryAbility',
  parameters: {
    // 可传递参数
    key: 'value'
  }
};

// 通过context启动
let context = ... // 获取UIAbility上下文
context.startAbility(wantInfo);

3. 跳转到网页

import { webview } from '@kit.ArkWeb';

// 在页面中嵌入Web组件
@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({
        src: 'https://example.com',
        controller: this.controller
      })
    }
  }
}

4. 带参数的URI跳转

// 传递参数
router.pushUrl({
  url: 'pages/Detail',
  params: {
    id: 123,
    name: 'example'
  }
} as router.RouterOptions);

// 在目标页面接收参数
import { RouterParams } from '@kit.ArkUI';

@Entry
@Component
struct DetailPage {
  @State id: number = 0;
  @State name: string = '';

  onPageShow() {
    const params = router.getParams() as RouterParams;
    this.id = params['id'] as number;
    this.name = params['name'] as string;
  }
}

注意事项:

  • 需要在module.json5中配置目标页面的路由信息
  • 跨应用跳转需要目标应用已安装且配置了相应的ability
  • 网页跳转需要网络权限声明

以上是鸿蒙Next中实现URI跳转的主要方式,开发者可根据具体场景选择合适的方法。

回到顶部