OpenHarmony应用拉起
·
拉起应用实现不同应用间的协同。若需要被外部应用拉起需要被拉起的应用配置的export(visible)属性为true。
1.startAbility
使用startAbility核心是配置want。传入显式Want和隐式Want都能够实现拉起应用。
1.1显式 Want(精准跳转)
适用场景:跳转自己应用内的组件,或明确知道目标应用 / 组件的具体信息(包名 + 类名)。
let want: Want = {
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
this.context.startAbility(want, (err: BusinessError) => {
if (err.code) {
// 处理业务逻辑错误
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
return;
}
// 执行正常业务
console.info('startAbility succeed');
});
} catch (err) {
// 处理入参错误异常
let code = (err as BusinessError).code;
let message = (err as BusinessError).message;
console.error(`startAbility failed, code is ${code}, message is ${message}`);
}
}
1.2 隐式 Want(模糊匹配)
适用场景:跨应用调用(如打开浏览器、发送邮件),不知道具体组件信息,只知道要完成的 “动作”。需要在目标应用的module.json5中配置相关skill,以视频文件拉起为例:
目标应用配置:
"module": {
"name": "entry",
"abilities": [
{
"skills": [
{
"actions": [
"ohos.want.action.viewData"
],
"uris": [
{
"scheme": "file",
"type": "video/*",
"linkFeature": "FileOpen"
}
]
}
]
},
],
}
发起端调用:
let want: Want = {
action: 'ohos.want.action.viewData',
uri: uri,
type: 'video/*',
flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
parameters: {
'uri': uri,
'name': name
}
};
此处调用仅want配置差异,后续调用和显式 Want相同。
2.使用aa命令
aa start -a ability名 -b bundle名
使用此命令可以拉起应用对应的ability
如需传递参数
| --pi |
可选参数,整型类型键值对。 说明: 仅支持无符号整型值。 |
| --pb | 可选参数,布尔类型键值对。 |
| --ps |
可选参数,字符串类型键值对。 说明: 字符串值不能以中划线“-”开头。 |
| --psn | 可选参数,空字符串关键字。 |
更多推荐
所有评论(0)