HarmonyOS 鸿蒙Next中如何拉起指定浏览器应用?
HarmonyOS 鸿蒙Next中如何拉起指定浏览器应用? 想在应用中添加指定链接跳转,但不知道怎么实现。
开发者可以通过在 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接口,配置要拉起的应用的参数,系统将会弹窗提示用户选择要在哪个应用中继续操作,用户选择后,在具体应用中继续操作。
注:
- 开发者需自行在
src/main/ets/viewmodel/MessageViewModel.ets
第67行代码修改自行配置的App Linking链接。 - 拉起自开发的应用需要开发者自行在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。如果设备安装了多个浏览器,系统会弹出选择器让用户选择。