HarmonyOS鸿蒙Next中第三方应用跳转短信应用编辑页面后,如何监听短信发送结果(成功和失败)及取消发送返回第三方应用的结果
HarmonyOS鸿蒙Next中第三方应用跳转短信应用编辑页面后,如何监听短信发送结果(成功和失败)及取消发送返回第三方应用的结果 第三方应用跳转短信应用编辑页面后,如何监听短信发送结果(成功和失败)及取消发送返回第三方应用的结果
使用startAbilityForResult回调 第三方应用通过startAbilityForResult跳转到短信编辑页面,并在短信应用关闭后通过onAbilityResult接收返回码,判断用户是否执行了发送操作:
发送成功/取消发送:返回RESULT_OK(用户点击发送)或RESULT_CANCELED(用户取消发送)38。
发送失败:鸿蒙系统未提供原生错误码,需依赖短信应用的回传(非标准实现,多数短信应用不支持)。
try {
this.context.startAbilityForResult(want, (err: BusinessError, result: common.AbilityResult) => {
if (err.code) {
// 处理业务逻辑错误
console.error(`startAbilityForResult failed, code is ${err.code}, message is ${err.message}`);
return;
}
// 执行正常业务
console.info('startAbilityForResult succeed');
});
} catch (err) {
// 处理入参错误异常
let code = (err as BusinessError).code;
let message = (err as BusinessError).message;
console.error(`startAbilityForResult failed, code is ${code}, message is ${message}`);
}
更多关于HarmonyOS鸿蒙Next中第三方应用跳转短信应用编辑页面后,如何监听短信发送结果(成功和失败)及取消发送返回第三方应用的结果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
sendShortMessage(options: SendMessageOptions, callback: AsyncCallback<void>): void
发送短信后,有一个回调:
sms.sendShortMessage(options, (err: BusinessError) => {
console.log(`callback: err->${JSON.stringify(err)}`);
})
如果回调中:
if (err) {
// 发送报错了,发送失败
} else {
// 发送成功
}
在HarmonyOS Next中,监听短信发送结果需使用wantAgent和commonEvent机制。发送短信时通过wantAgent启动短信应用,并订阅usual.event.SMS_SEND_RESULT
公共事件。该事件会返回发送状态(成功/失败)和取消发送的信息。返回第三方应用使用wantAgent的回调功能处理。具体实现涉及wantAgent的operationType设置为OperationType.SEND和commonEvent的订阅/发布机制。
在HarmonyOS Next中,可以通过以下方式监听短信发送结果:
- 使用
startAbilityForResult
启动短信应用:
let want = {
bundleName: 'com.huawei.mms',
abilityName: 'com.huawei.mms.ui.ComposeMessageActivity',
parameters: {
address: '10086',
body: '测试内容'
}
};
let requestCode = 1001;
this.context.startAbilityForResult(want, requestCode)
.then(data => {
// 处理返回结果
})
.catch(error => {
// 处理错误
});
- 在
onAbilityResult
中接收返回结果:
onAbilityResult(requestCode, resultCode, data) {
if (requestCode === 1001) {
if (resultCode === 0) {
// 短信发送成功
} else if (resultCode === -1) {
// 用户取消发送
} else {
// 发送失败
}
}
}
- 需要注意的几点:
- 需要声明ohos.permission.SEND_MESSAGES权限
- 不同短信应用可能返回的resultCode值不同,建议做好兼容处理
- 部分定制ROM可能修改了短信应用的行为,需进行充分测试
这种方式可以覆盖用户主动取消和发送成功/失败的主要场景。