HarmonyOS鸿蒙Next中如何使用Want启动其他应用或系统功能?
HarmonyOS鸿蒙Next中如何使用Want启动其他应用或系统功能? 我需要从应用中打开浏览器、拨打电话、发送短信等系统功能,如何使用Want实现?
实现思路:
- 导入相关模块:
import { common, Want } from '@kit.AbilityKit';
- 构造Want对象并启动:
const context = getContext(this) as common.UIAbilityContext;
const want: Want = {
action: 'ohos.want.action.viewData',
uri: 'https://www.example.com'
};
await context.startAbility(want);
- 封装常用的系统功能调用:
class IntentUtil {
static async openUrl(context: common.UIAbilityContext, url: string) {
const want: Want = { action: 'ohos.want.action.viewData', uri: url };
await context.startAbility(want);
}
}
- 完整示例代码:
import { common, Want } from '@kit.AbilityKit';
class IntentUtil {
static async openBrowser(context: common.UIAbilityContext, url: string): Promise<void> {
try {
const want: Want = { action: 'ohos.want.action.viewData', uri: url };
await context.startAbility(want);
} catch (err) {
console.error(`Open browser failed: ${JSON.stringify(err)}`);
}
}
static async dialPhone(context: common.UIAbilityContext, phoneNumber: string): Promise<void> {
try {
const want: Want = { action: 'ohos.want.action.dial', uri: `tel:${phoneNumber}` };
await context.startAbility(want);
} catch (err) {
console.error(`Dial phone failed: ${JSON.stringify(err)}`);
}
}
static async sendSms(context: common.UIAbilityContext, phoneNumber: string, message: string): Promise<void> {
try {
const want: Want = {
action: 'ohos.want.action.sendSms',
uri: `sms:${phoneNumber}`,
parameters: { sms_body: message }
};
await context.startAbility(want);
} catch (err) {
console.error(`Send SMS failed: ${JSON.stringify(err)}`);
}
}
}
@Entry
@Component
struct IntentDemo {
private context = getContext(this) as common.UIAbilityContext;
build() {
Column({ space: 16 }) {
Button('打开浏览器')
.onClick(() => IntentUtil.openBrowser(this.context, 'https://www.harmonyos.com'))
Button('拨打电话')
.onClick(() => IntentUtil.dialPhone(this.context, '10086'))
Button('发送短信')
.onClick(() => IntentUtil.sendSms(this.context, '10086', '查询余额'))
}
.padding(20)
}
}
更多关于HarmonyOS鸿蒙Next中如何使用Want启动其他应用或系统功能?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,使用Want启动其他应用或系统功能,主要通过UIAbility的上下文(context)调用startAbility()方法实现。Want是对象形式,需设置目标应用的bundleName和abilityName等参数。例如,启动系统设置:let want = { bundleName: 'com.ohos.settings', abilityName: 'SettingsAbility' }; context.startAbility(want)。此机制用于应用间交互与系统功能调用。
在HarmonyOS Next中,使用Want启动其他应用或系统功能是标准方式。以下是具体实现方法:
1. 启动系统功能(隐式Want)
对于打开浏览器、拨打电话等系统功能,通常使用隐式Want,指定action和uri等参数。
- 打开浏览器:
import { wantConstant, common, Want } from '@kit.AbilityKit';
let wantInfo: Want = {
action: wantConstant.Action.VIEW_ACTION,
uri: 'https://developer.harmonyos.com'
};
let context = getContext(this) as common.UIAbilityContext;
context.startAbility(wantInfo).then(() => {
// 成功回调
}).catch((err) => {
// 失败处理
});
- 拨打电话:
let wantInfo: Want = {
action: wantConstant.Action.DIAL_ACTION,
uri: 'tel:10086'
};
context.startAbility(wantInfo);
- 发送短信:
let wantInfo: Want = {
action: wantConstant.Action.SENDTO_ACTION,
uri: 'smsto:10086',
parameters: {
'content': '短信内容'
}
};
context.startAbility(wantInfo);
2. 启动其他应用(显式Want)
如果需要启动特定应用,使用显式Want,指定bundleName和abilityName:
let wantInfo: Want = {
bundleName: 'com.example.app',
abilityName: 'EntryAbility'
};
context.startAbility(wantInfo);
3. 关键配置
在module.json5中声明需要的权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.PLACE_CALL"
}
]
}
}
注意事项:
- 拨打电话等敏感操作需要相应权限并在安装时授权
- 系统功能使用的action常量定义在
@kit.AbilityKit的wantConstant中 - 确保uri格式符合标准(如
tel:、smsto:、https:)
这种方式提供了统一的应用间通信机制,能可靠地启动系统功能和其他应用。

