Harmonny-短信服务

92 阅读1分钟

发送短信

注意:需授予发送短信权限且插入SIM卡!!!

startMMSAbilityExplicit() {
  // 这里完善联系人和号码;姓名主要是通过手机号来查询实际联系人名称,因此这种方式还是以手机号码为主。
  let params: Array<Object> = [new Contact("张三", 13344556677)];

  let want: Want = {
    //  在app.json5文件中
    bundleName: "com.ohos.mms",
    //  在module.json5文件的abilities里
    abilityName: "com.ohos.mms.MainAbility",
    // 自行决定传入的键值对,也会默认携带一些关于拉起方和应用的某些信息
    parameters: {
      contactObjects: JSON.stringify(params),
      pageFlag: "conversation",
      // 这里填写短信内容。
      content: "我是短信具体内容"
    }
  };

  this.context.startAbilityForResult(want).then((data) => {
    console.log("Success" + JSON.stringify(data));
  }).catch(() => {
    console.log("error");
  });
}

短信服务的API

1. sms.createMessage(pdu: Array<number>, specification: string, callback: AsyncCallback<ShortMessage>): void-->根据协议数据单元(PDU)和指定的短信协议创建短信实例(specification:短信协议类型)【也支持Promise回调】

2.sms.sendShortMessage(options: SendMessageOptions, callback: AsyncCallback<void>): void-->发送短信(需要权限ohos.permission.SEND_MESSAGES)(SendMessageOptions:slotId(发送短信的耳朵SIM卡槽ID);destinationHost(发送短信的发送地址);content:(内容,若为字节数组,则需同步配置destinationPort、sendCallback、deliveryCallback属性);serviceCenter(短信中心地址))【也支持Promise回调】

3.sms.getDefaultSmsSimId(callback: AsyncCallback<number>): void-->获取发送短信的默认SIM卡槽ID【也支持Promise回调】

4.sms.hasSmsCapability(): boolean-->检查当前设备是否具备短信发送和接收能力

Promise回调和callback回调的区别:

同:都是处理异步操作的方式

异:

callback(单一异步操作):是一种函数,作为一种参数传递给另一个函数,并在该函数执行完成后被调用,不需要创建额外的对象,但有“回调地狱”的风险; promise(多个异步操作):提供了 .then().catch().finally() 等方法,逻辑更清晰,但需要创建额外的对象,相对会复杂一些。

UIAbilityContext是个啥???