uniapp 鸿蒙如何打开url或实现url跳转

在uniapp开发鸿蒙应用时,如何实现URL的打开或跳转?目前尝试使用uni.navigateTouni.redirectTo在鸿蒙平台无法正常跳转网页链接,系统也未弹出浏览器窗口。请问是否有针对鸿蒙平台的特定API或配置方案?需要兼容H5和原生鸿蒙环境,求具体实现方法或示例代码。

2 回复

在uniapp中,可以使用uni.navigateTouni.redirectTo进行页面跳转。若需打开外部URL,可使用plus.runtime.openURL(url),但需注意鸿蒙平台兼容性。

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


在 UniApp 中,打开 URL 或实现页面跳转的方法取决于目标类型(应用内页面、外部网页或鸿蒙原生能力)。以下是具体实现方式:

1. 应用内页面跳转

使用 UniApp 内置的导航 API,适用于跳转到应用内的 .vue 页面:

// 方式一:跳转到指定页面(可返回)
uni.navigateTo({
  url: '/pages/index/index' // 填写页面路径(在 pages.json 中定义)
});

// 方式二:重定向页面(不可返回)
uni.redirectTo({
  url: '/pages/detail/detail'
});

// 方式三:跳转到 TabBar 页面
uni.switchTab({
  url: '/pages/home/home'
});

2. 打开外部网页

使用 uni.navigateTo 配合 WebView 组件,或直接调用系统浏览器:

// 方式一:在应用内嵌入 WebView(新建一个 .vue 页面)
// pages/webview/webview.vue 文件内容:
<template>
  <web-view :src="url"></web-view>
</template>
<script>
export default {
  data() {
    return { url: '' }
  },
  onLoad(options) {
    this.url = options.url; // 接收传入的 URL
  }
}
</script>

// 跳转时传递 URL 参数:
uni.navigateTo({
  url: '/pages/webview/webview?url=' + encodeURIComponent('https://example.com')
});

// 方式二:调用系统浏览器打开
uni.navigateTo({
  url: '/pages/webview/webview?url=' + encodeURIComponent('https://example.com')
});

3. 鸿蒙原生能力适配

若需调用鸿蒙系统的 URL 打开能力(如深层链接),可通过 UniApp 的条件编译:

// #ifdef APP-PLUS
const intent = plus.android.invoke('android.content.Intent', 'setAction', 'android.intent.action.VIEW');
intent.invoke('setData', plus.android.invoke('android.net.Uri', 'parse', 'https://example.com'));
plus.android.runtimeMainActivity().invoke('startActivity', intent);
// #endif

注意事项:

  • 路径规范:应用内跳转需使用 /pages/xxx/xxx 格式,路径在 pages.json 中注册。
  • URL 编码:传递外部 URL 时使用 encodeURIComponent 防止参数错误。
  • 平台差异:鸿蒙环境需通过 plus 接口调用原生功能,建议封装为通用方法。

示例场景:

// 统一跳转方法
function openURL(target) {
  if (target.startsWith('/')) {
    uni.navigateTo({ url: target }); // 应用内页面
  } else if (target.startsWith('http')) {
    // 内部 WebView
    uni.navigateTo({
      url: `/pages/webview/webview?url=${encodeURIComponent(target)}`
    });
  }
}

根据需求选择合适的方式,应用内页面用导航 API,外部链接用 WebView 或系统浏览器。

回到顶部