🎛️ HarmonyOS类型化应用拉起:让用户自主选择协作工具

0 阅读2分钟

一、垂域应用类型与核心参数

1. 导航类应用(类型标识navigation

参数名类型必填说明
sceneTypenumber1-路线规划 2-导航 3-位置搜索
destinationLatitudenumber终点纬度
destinationLongitudenumber终点经度
vehicleTypenumber0-驾车 1-步行 2-骑行 3-公交

代码示例

const wantParam = {
  sceneType: 1,
  destinationLatitude: 39.9042,
  destinationLongitude: 116.4074,
  vehicleType: 0
};
context.startAbilityByType("navigation", wantParam, callback);

2. 金融类应用(类型标识finance

参数名类型必填说明
sceneTypenumber1-转账 2-信用卡还款
bankCardNostring银行卡号

代码示例

const wantParam = {
  sceneType: 1,
  bankCardNo: "6222021100012345678"
};
context.startAbilityByType("finance", wantParam, callback);

二、媒体与文件处理类型

1. 图片编辑(类型标识photoEditor

// 拉起图片编辑应用并传递图片URI
const wantParam = {
  uri: "file:///sdcard/photo.jpg"
};
context.startAbilityByType("photoEditor", wantParam, (result) => {
  const editedUri = result?.uri; // 处理编辑后图片URI
});

2. 文件处理(通过Action拉起)

// 打开文本文件
const want = {
  action: "ohos.want.action.viewData",
  uri: "file:///sdcard/doc.txt",
  type: "general.plain-text",
  flags: common.WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
};
context.startAbility(want);

三、邮件类应用(类型标识mail

参数名类型说明
emailstring[]收件人邮箱
subjectstring邮件主题
bodystring邮件正文
streamstring[]附件URI列表

代码示例

const wantParam = {
  email: ["user@example.com"],
  subject: "反馈邮件",
  body: "问题描述...",
  stream: ["file:///sdcard/attachment.jpg"]
};
context.startAbilityByType("mail", wantParam, callback);

四、开发核心要点

  1. 类型标识规范

    • 必须使用系统定义的类型标识(如navigation/finance
    • 自定义类型需在配置文件中声明skills
  2. 回调处理

    const callback = {
      onResult: (data) => { /* 处理返回结果 */ },
      onError: (code, msg) => { /* 错误处理 */ }
    };
    
  3. 权限控制

    • 文件类操作需添加FLAG_AUTH_READ_URI_PERMISSION等权限标志
    • 敏感操作(如金融转账)建议额外添加权限校验

总结

通过startAbilityByType接口,HarmonyOS实现了类型化应用拉起,允许用户自主选择同类型应用(如地图/银行/编辑器)。开发时需注意类型标识准确性、参数完整性及回调处理,结合WantParam传递场景化数据,即可打造灵活的应用协作体验。