HarmonyOS 应用开发《掌上英语》第89篇:短信服务通知模块实现
短信服务场景介绍短信服务模块提供了管理短信的一些基础能力包括创建/发送短信、获取/设置发送短信的默认SIM卡槽ID、获取/设置短信服务中心地址以及检查当前设备是否具备短信发送和接收能力等。常见的应用场景举例如下从网页拉起用户在网页上浏览看到“发送短信”按钮点击后会拉起短信应用预先填写收件人号码、发送内容。从应用拉起移动应用中用户点击“发送短信”按钮时应用调用系统功能拉起短信应用预先填写收件人号码、发送内容。基本概念短信服务即SMSShort Messaging Service是一种存储和转发服务。用户的移动电话可以通过它进行相互收发短信内容以文本、数字或二进制非文本数据为主。发送方的信息通过短信服务中心进行储存并转发给接收方。短信服务中心即SMSCShort Message Service Center负责在基站和移动设备间中继、储存或转发短消息。移动设备到短信服务中心的协议能传输来自移动设备或朝向移动设备的短消息协议内容遵从GSM 03.40协议。协议数据单元即PDUProtocol Data UnitPDU模式收发短信可以使用3种编码7-bit、8-bit和UCS-2编码。7-bit编码用于发送普通的ASCII字符8-bit编码通常用于发送数据短信UCS-2编码用于发送Unicode字符。约束与限制仅支持在标准系统上运行。需授予发送短信权限且插入SIM卡才可成功发送短信。接口说明说明为了保证应用的运行效率大部分API调用都是异步的对于异步调用的API均提供了callback和Promise两种方式以下示例采用callback回调方式其他调用方式请参考API文档。接口名描述sendShortMessage(options: SendMessageOptions, callback: AsyncCallbackvoid): void发送文本或数据SMS消息。需要配置ohos.permission.SEND_MESSAGES权限该权限仅系统应用可申请。createMessage(pdu: Arraynumber, specification: string, callback: AsyncCallbackShortMessage): void基于协议数据单元PDU和指定的SMS协议创建SMS消息实例。getDefaultSmsSlotId(callback: AsyncCallbacknumber): void获取用于发送短信的默认SIM卡。setSmscAddr(slotId: number, smscAddr: string, callback: AsyncCallbackvoid): void根据指定的插槽ID设置短信服务中心的地址。getSmscAddr(slotId: number, callback: AsyncCallbackstring): void根据指定的插槽ID获取短信服务中心地址。发送短信仅供系统应用使用声明接口调用所需要的权限如果是想发送短信则调用sendShortMessage接口需要配置ohos.permission.SEND_MESSAGES权限权限级别为system_basic。如果是想设置短信服务中心地址则调用setSmscAddr接口需要配置ohos.permission.SET_TELEPHONY_STATE权限权限级别为system_basic。如果是想获取短信服务中心地址则调用getSmscAddr接口需要配置ohos.permission.GET_TELEPHONY_STATE权限权限级别为system_basic。在申请权限前请保证符合权限使用的基本原则。然后参考申请应用权限声明对应权限。import需要的模块。发送SMS消息。// 示例代码import{sms}fromkit.TelephonyKit;import{AsyncCallback,BusinessError}fromkit.BasicServicesKit;letsendCallback:AsyncCallbacksms.ISendShortMessageCallback(err:BusinessError,data:sms.ISendShortMessageCallback){console.info(sendCallback: err-${JSON.stringify(err)},>${JSON.stringify(data)});}letdeliveryCallback:AsyncCallbacksms.IDeliveryShortMessageCallback(err:BusinessError,data:sms.IDeliveryShortMessageCallback){console.info(deliveryCallback: err-${JSON.stringify(err)},>${JSON.stringify(data)});}letslotId:number0;letcontent:string短信内容;letdestinationHost:string861xxxxxxxxxx;letserviceCenter:string861xxxxxxxxxx;letdestinationPort:number1000;letoptions:sms.SendMessageOptions{slotId,content,destinationHost,serviceCenter,destinationPort,sendCallback,deliveryCallback};sms.sendShortMessage(options,(err:BusinessError){console.error(callback: err-${JSON.stringify(err)});});应用内跳转到短信编辑界面发送短信的接口需要系统权限才可调用三方应用如果有发送短信需求需要在应用内实现跳转到短信编辑的功能并且需要携带编辑内容和收件人号码可以通过调用元能力startAbility接口指定号码并跳转到发送短信页面的方式实现。// 示例代码import{common,Want}fromkit.AbilityKit;constMMS_BUNDLE_NAMEcom.ohos.mms;constMMS_ABILITY_NAMEcom.ohos.mms.MainAbility;constMMS_ENTITIESentity.system.home;exportclassContact{contactsName:string;telephone:number;constructor(contactsName:string,telephone:number){this.contactsNamecontactsName;this.telephonetelephone;}}EntryComponentstruct JumpMessage{privatecontextthis.getUIContext().getHostContext()ascommon.UIAbilityContext;startMMSAbilityExplicit(){// 这里完善联系人和号码姓名主要是通过手机号来查询实际联系人名称因此这种方式还是以手机号码为主。letparams:ArrayObject[newContact(张三,133XXXXXXXX)];letwant:Want{bundleName:com.ohos.mms,abilityName:com.ohos.mms.MainAbility,parameters:{contactObjects:JSON.stringify(params),pageFlag:conversation,// 这里填写短信内容。content:我是短信具体内容}};this.context.startAbilityForResult(want).then((data){console.info(SuccessJSON.stringify(data));}).catch((){console.error(error);});}build(){Row(){Column(){Button(发送短信).onClick((){this.startMMSAbilityExplicit();})}.width(100%)}.height(100%)}}sms方式跳转到短信编辑界面使用场景通过sms短信协议可以创建指向短信收件人的超链接方便用户通过网页或应用中的超链接直接跳转到短信应用。同时支持在sms:的相关字段中定义短信的收件人、发送内容等节省用户编辑短信的时间。sms协议格式sms协议标准格式如下sms:106XXXXXXXXXX?body发送短信内容sms:sms scheme必填。106XXXXXXXXXX收件人号码选填。如果存在多个地址用英文逗号分隔。?短信内容声明开始符号。如果带短信内容参数则必填。body-value发送内容参数选填。拉起方开发步骤从网页拉起网页中的超链接需要满足sms协议。示例如下a hrefsms:106XXXXXXXXXX?body%E5%8F%91%E9%80%81%E7%9F%AD%E4%BF%A1%E5%86%85%E5%AE%B9发送短信/a实际开发时需要将收件人号码替换为真实的号码短信内容可以根据需要进行配置。从应用拉起保证sms字符串传入uri参数即可在应用中page页面可通过 this.getUIContext().getHostContext() 获取context在ability中可通过this.context获取context。// 示例代码import{common,Want}fromkit.AbilityKit;EntryComponentstruct Index{build(){Column(){Button(发送短信).onClick((){letcontextthis.getUIContext().getHostContext()ascommon.UIAbilityContext;letexampleUrlsms:106XXXXXXXXXX?body%E5%8F%91%E9%80%81%E7%9F%AD%E4%BF%A1%E5%86%85%E5%AE%B9;letwant:Want{bundleName:com.ohos.mms,action:ohos.want.action.viewData,uri:exampleUrl,}context.startAbility(want).then((data){console.info(SuccessJSON.stringify(data));}).catch((){console.error(error);});})}}}相关实例针对短信的使用有以下相关实例可供参考短信服务ArkTSFull SDKAPI9

相关新闻

落地案例|东莞厚街精密制造产业园 200 路高清监控 AI 视频压缩改造(广东融科数据)

落地案例|东莞厚街精密制造产业园 200 路高清监控 AI 视频压缩改造(广东融科数据)

专栏:大数据与智能系统集成 标签:#AI 视频压缩 #工业安防 #存储优化 #海康皓视通 #创维安防 #东莞数字化改造 原创声明:本文由广东融科数据服务有限公司技术团队原创项目复盘,转载请标注来源:广东融科数据 CSDN 企业博…

2026/10/24 5:29:22 阅读更多 →
如何用手机控制另一部手机 怎样远程控制另一部手机

如何用手机控制另一部手机 怎样远程控制另一部手机

如何用手机控制另一部手机?很多人遇到长辈手机故障、旧手机闲置挂机、异地协助操作设备等场景时,都会被这个问题困扰。如何用手机控制另一部手机,其实无需复杂的技术操作,选对远程工具就能轻松实现。对比多款手机远程控制软件后&a…

2026/10/25 15:32:36 阅读更多 →
研究生开题报告教程:从选题到框架搭建全流程实用指导指南

研究生开题报告教程:从选题到框架搭建全流程实用指导指南

很多2026届新生刚入学或刚转博,就被开题报告这四个字整得心力交瘁。最崩溃的不是写不出来,而是你辛辛苦苦熬夜半个月翻出来的创新点,导师看一眼就冷冷地抛回一句:这个方向十年前就有人做透了,前沿性在哪?或…

2026/10/25 23:56:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →