发送短信
注意:需授予发送短信权限且插入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是个啥???