HarmonyOS 鸿蒙Next中如何拉起指定浏览器应用?

HarmonyOS 鸿蒙Next中如何拉起指定浏览器应用? 想在应用中添加指定链接跳转,但不知道怎么实现。

4 回复

开发者可以通过在 want 参数中隐式指定 action 为 ohos.want.action.viewData 来启动浏览器应用,并在 want的 uri 参数中配置要打开的网页链接。此时,系统将启动设备上的默认浏览器。如果设备上存在多个浏览器应用,并且希望用户能够自行选择要使用的浏览器,需要在 parameters 中设置 ohos.ability.params.showDefaultPicker 为 true。

function startBrowsableAbility(context: common.UIAbilityContext): void {
  let want: Want = {
    action: 'ohos.want.action.viewData',
    entities: ['entity.system.browsable'],
    uri: 'https://www.huawei.com/',
    parameters: {
      'ohos.ability.params.showDefaultPicker': true
    }
  };
  context.startAbility(want)
    .then(() => {
      console.error('Start browsableAbility successfully.');
    })
    .catch((err: BusinessError) => {
      console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
    });
}

更多关于HarmonyOS 鸿蒙Next中如何拉起指定浏览器应用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


【背景知识】
AppLinking:App Linking提供“应用链接”和“元服务链接”,可用于实现跳转HarmonyOS应用或者跳转元服务的功能。在实现跳转HarmonyOS应用的基础上,您还可以使用延迟链接能力、直达应用市场能力,提升链接跳转体验和链接转换率。

【参考方案】:
可参考基于AppLinking实现应用间跳转示例,基于AppLinking拉端能力,实现了应用间跳转相关功能,包括拉起设置应用,指定应用拉起,指定意图拉起,拉起应用完成后带参返回等,为应用间跳转场景提供了统一可信的拉端体验。

拉起指定类型应用使用startAbilityByType接口,配置要拉起的应用的参数,系统将会弹窗提示用户选择要在哪个应用中继续操作,用户选择后,在具体应用中继续操作。

注:

  1. 开发者需自行在src/main/ets/viewmodel/MessageViewModel.ets第67行代码修改自行配置的App Linking链接。
  2. 拉起自开发的应用需要开发者自行在dependence/AppLinkingTestDemo应用内进行App Linking相关配置,包括申请App Linking链接、申请证书与Profile签名等。

在HarmonyOS Next中,使用UIAbility的startAbility方法,通过Want参数指定目标浏览器的bundleName和abilityName。示例代码:

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

let want = {
  bundleName: '目标浏览器包名',
  abilityName: '目标浏览器Ability名'
};
this.context.startAbility(want).catch(error => {
  console.error('拉起浏览器失败');
});

需提前查询目标浏览器的准确包名和Ability名称。

在HarmonyOS Next中,可以通过wantAgent拉起指定浏览器应用并打开链接。以下是示例代码:

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

// 定义要打开的URL
let url = "https://example.com";

// 配置WantAgent参数
let wantAgentInfo: wantAgent.WantAgentInfo = {
  wants: [
    {
      action: 'ohos.want.action.viewData',
      uri: url,
      type: 'text/html'
    }
  ],
  operationType: wantAgent.OperationType.START_ABILITY
};

// 获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo, (err, agent) => {
  if (err) {
    console.error(`Failed to get wantAgent. Code: ${err.code}, message: ${err.message}`);
    return;
  }
  
  // 触发WantAgent
  let context = getContext(this) as common.UIAbilityContext;
  wantAgent.trigger(agent, context, (triggerErr) => {
    if (triggerErr) {
      console.error(`Failed to trigger wantAgent. Code: ${triggerErr.code}, message: ${triggerErr.message}`);
    }
  });
});

此代码会调用系统默认浏览器打开指定URL。如果设备安装了多个浏览器,系统会弹出选择器让用户选择。

回到顶部