HarmonyOS 鸿蒙Next中应用如何跳转第三方软件

HarmonyOS 鸿蒙Next中应用如何跳转第三方软件 有没有跳转第三方软件的相关demo

4 回复

以设置为例:

uiContext = this.getUIContext();
  /**
   * 打开系统设置页面
   *
   * 该函数用于跳转到华为鸿蒙系统的设置应用,并导航到指定的应用信息页面。
   * 如果跳转失败,则会显示相应的错误提示。
   */
  openSystemSettings() {
    // 获取上下文并转换为UIAbilityContext类型
    const context = this.uiContext.getHostContext() as common.UIAbilityContext
    // 启动系统设置应用,跳转到应用信息页面
    context.startAbility({
      bundleName: 'com.huawei.hmos.settings',  //应用包名。在应用启动场景中表示被拉起方的应用包名。
      abilityName: 'com.huawei.hmos.settings.MainAbility', //应用名称。在应用启动场景中表示被拉起方的应用名称。
      uri: 'application_info_entry',  //统一资源标识符
      parameters: {   //传递参数对象
        pushParams: 'com.tencent.interview_success'
      }
    }).catch(() => {
      // 跳转失败时显示错误提示
      promptAction.openToast({ message: '暂无法打开设置' })
    })
  }

更多关于HarmonyOS 鸿蒙Next中应用如何跳转第三方软件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


拉起指定应用

拉起指定应用是指明确指定目标应用进行跳转的场景。系统提供两种主要实现方式:

应用链接(App Linking和Deep Linking)

  • App Linking:通过域名校验和HTTPS协议,实现更安全可靠的跳转。当目标方未安装时,可以打开Web网页内容,为用户提供更好的体验。
  • Deep Linking:实现相对简单,但存在被恶意仿冒的风险。当目标方未安装时,用户体验往往不佳,容易遇到报错情况。

相较于Deep Linking,App Linking有如下优势:

  • 安全性:通过端云安全鉴权和域名校验,确保只有合法应用被拉起。
  • 直达体验:无需二次确认,直接跳转到应用内指定页面。
  • 直达应用市场:未安装应用时可跳转至应用市场应用详情页。
  • 延迟链接:支持应用安装后恢复之前的跳转意图。

图片

基于安全性和用户体验的全面考量,建议优先采用App Linking技术。与Deep Linking相比,App Linking提供了更高的安全性,避免了仿冒风险,并提升了用户在应用间跳转时的整体使用体验。

使用openLink实现应用跳转

openLink接口的link字段中传入目标应用的URL信息,并将options字段中的appLinkingOnly配置为false。

示例代码如下:

import { common, OpenLinkOptions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG: string = '[UIAbilityComponentsOpenLink]';
const DOMAIN_NUMBER: number = 0xFF00;
@Entry
@Component
struct Index {
  build() {
    Button('start link', { type: ButtonType.Capsule, stateEffect: true })
      .width('87%')
      .height('5%')
      .margin({ bottom: '12vp' })
      .onClick(() => {
        let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
        let link: string = "link://www.example.com";
        let openLinkOptions: OpenLinkOptions = {
          appLinkingOnly: false
        };
        try {
          context.openLink(link, openLinkOptions)
            .then(() => {
              hilog.info(DOMAIN_NUMBER, TAG, 'openLink success.');
            }).catch((err: BusinessError) => {
              hilog.error(DOMAIN_NUMBER, TAG, `openLink failed. Code is ${err.code}, message is ${err.message}`);
            });
        } catch (paramError) {
          hilog.error(DOMAIN_NUMBER, TAG, `Failed to start link. Code is ${paramError.code}, message is ${paramError.message}`);
        }
      })
  }
}

在HarmonyOS Next中,应用可通过Want对象实现跳转第三方软件。使用featureAbility.startAbility()方法,传入包含目标应用bundleName和abilityName的Want参数。系统会匹配并启动对应应用。需在config.json中声明目标应用权限,确保设备已安装该应用。跳转前可通过abilityAccessCtrl验证权限。

在HarmonyOS Next中,应用可通过Want类型隐式跳转启动第三方软件。示例代码如下:

import common from '@ohos.app.ability.common';

// 通过action和uri跳转目标应用
let wantInfo = {
  action: 'ohos.want.action.viewData',
  uri: 'https://example.com'  // 或使用其他协议如tel:、mailto:
};

let context = getContext(this) as common.UIAbilityContext;
context.startAbility(wantInfo).then(() => {
  console.log('跳转成功');
}).catch((err) => {
  console.error(`跳转失败: ${err.code}`);
});

关键点:

  1. 使用startAbility方法发起跳转
  2. Want对象需配置正确的action和uri
  3. 目标应用需声明支持对应的action
  4. 系统会匹配并启动符合条件的应用

建议查看官方Sample中StartAbility相关案例,了解完整实现方式。

回到顶部