鸿蒙开发电话服务:【 @ohos.telephony.sms (短信服务)】
短信服务
说明:
本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import sms from '@ohos.telephony.sms';
sms.createMessage
createMessage(pdu: Array, specification: string, callback: AsyncCallback): void
根据协议数据单元(PDU)和指定的短信协议创建短信实例,使用callback方式作为异步方法。
系统能力:SystemCapability.Telephony.SmsMms
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pdu | Array | 是 | 协议数据单元,从收到的信息中获取。 |
| specification | string | 是 | 短信协议类型。 - 3gpp表示GSM/UMTS/LTE SMS - 3gpp2表示CDMA SMS |
| callback | AsyncCallback<[ShortMessage]> | 是 | 回调函数。 |
示例:
const specification = '3gpp';
// 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...]
const pdu = [0x08, 0x91];
sms.createMessage(pdu, specification, (err, data) => {console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
sms.createMessage
createMessage(pdu: Array, specification: string): Promise
根据协议数据单元(PDU)和指定的短信协议创建短信实例,使用Promise方式作为异步方法。
系统能力:SystemCapability.Telephony.SmsMms
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pdu | Array | 是 | 协议数据单元,从收到的信息中获取。 |
| specification | string | 是 | 短信协议类型。 - 3gpp表示GSM/UMTS/LTE SMS - 3gpp2表示CDMA SMS |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<[ShortMessage]> | 以Promise形式返回创建的短信实例。 |
示例:
const specification = '3gpp';
// 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...]
const pdu = [0x08, 0x91];
let promise = sms.createMessage(pdu, specification);
promise.then(data => {console.log(`createMessage success, promise: data->${JSON.stringify(data)}`);
}).catch(err => {console.error(`createMessage fail, promise: err->${JSON.stringify(err)}`);
});
sms.sendMessage
sendMessage(options: SendMessageOptions): void
发送短信。
需要权限:ohos.permission.SEND_MESSAGES
系统能力:SystemCapability.Telephony.SmsMms
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | [SendMessageOptions] | 是 | 发送短信的参数和回调,参考[SendMessageOptions]。 |
示例:
let sendCallback = function (err, data) { console.log(`sendCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
}
let deliveryCallback = function (err, data) { console.log(`deliveryCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
}
let slotId = 0;
let content = '短信内容';
let destinationHost = '+861xxxxxxxxxx';
let serviceCenter = '+861xxxxxxxxxx';
let destinationPort = 1000;
let options = {slotId, content, destinationHost, serviceCenter, destinationPort, sendCallback, deliveryCallback};
sms.sendMessage(options);
sms.getDefaultSmsSlotId7+
getDefaultSmsSlotId(callback: AsyncCallback): void
获取发送短信的默认SIM卡槽ID,使用callback方式作为异步方法。
系统能力:SystemCapability.Telephony.SmsMms
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback | 是 | 回调函数。 - 0:卡槽1 - 1:卡槽2 |
示例:
sms.getDefaultSmsSlotId((err, data) => {console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
sms.getDefaultSmsSlotId7+
getDefaultSmsSlotId(): Promise
获取发送短信的默认SIM卡槽ID,使用Promise方式作为异步方法。
系统能力:SystemCapability.Telephony.SmsMms
返回值:
| 类型 | 说明 |
|---|---|
| Promise | 以Promise形式返回发送短信的默认SIM卡: - 0:卡槽1 - 1:卡槽2 |
示例:
let promise = sms.getDefaultSmsSlotId();
promise.then(data => {console.log(`getDefaultSmsSlotId success, promise: data->${JSON.stringify(data)}`);
}).catch(err => {console.error(`getDefaultSmsSlotId fail, promise: err->${JSON.stringify(err)}`);
});
sms.setSmscAddr7+
setSmscAddr(slotId: number, smscAddr: string, callback: AsyncCallback): void
设置短信服务中心(SMSC)地址,使用callback方式作为异步方法。
需要权限:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限
系统能力:SystemCapability.Telephony.SmsMms
系统API:该接口为系统接口,三方应用不支持调用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slotId | number | 是 | SIM卡槽ID: - 0:卡槽1 - 1:卡槽2 |
| smscAddr | string | 是 | 短信服务中心地址。 |
| callback | AsyncCallback | 是 | 回调函数。 |
示例:
let slotId = 0;
let smscAddr = '+861xxxxxxxxxx';
sms.setSmscAddr(slotId, smscAddr, (err,data) => {console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
sms.setSmscAddr7+
setSmscAddr(slotId: number, smscAddr: string): Promise
设置短信服务中心(SMSC)地址,使用Promise方式作为异步方法。
需要权限:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限
系统能力:SystemCapability.Telephony.SmsMms
系统API:该接口为系统接口,三方应用不支持调用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slotId | number | 是 | SIM卡槽ID: - 0:卡槽1 - 1:卡槽2 |
| smscAddr | string | 是 | 短信服务中心地址。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise | 以Promise形式异步返回设置结果。 |
示例:
let slotId = 0;
let smscAddr = '+861xxxxxxxxxx';
let promise = sms.setSmscAddr(slotId, smscAddr);
promise.then(data => {console.log(`setSmscAddr success, promise: data->${JSON.stringify(data)}`);
}).catch(err => {console.error(`setSmscAddr fail, promise: err->${JSON.stringify(err)}`);
});
sms.getSmscAddr7+
getSmscAddr(slotId: number, callback: AsyncCallback): void
获取短信服务中心(SMSC)地址,使用callback方式作为异步方法。
需要权限:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限
系统能力:SystemCapability.Telephony.SmsMms
系统API:该接口为系统接口,三方应用不支持调用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slotId | number | 是 | SIM卡槽ID: - 0:卡槽1 - 1:卡槽2 |
| callback | AsyncCallback | 是 | 回调函数。 |
示例:
let slotId = 0;
sms.getSmscAddr(slotId, (err, data) => {console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
sms.getSmscAddr7+
getSmscAddr(slotId: number): Promise
获取短信服务中心(SMSC)地址,使用Promise方式作为异步方法。
需要权限:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限
系统能力:SystemCapability.Telephony.SmsMms
系统API:该接口为系统接口,三方应用不支持调用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slotId | number | 是 | SIM卡槽ID: - 0:卡槽1 - 1:卡槽2 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise | 以Promise形式返回获取短信服务中心地址的结果。 |
示例:
let slotId = 0;
let promise = sms.getSmscAddr(slotId);
promise.then(data => {console.log(`getSmscAddr success, promise: data->${JSON.stringify(data)}`);
}).catch(err => {console.error(`getSmscAddr fail, promise: err->${JSON.stringify(err)}`);
});
sms.hasSmsCapability7+
hasSmsCapability(): boolean
检查当前设备是否具备短信发送和接收能力,该方法是同步方法。
系统能力:SystemCapability.Telephony.SmsMms
返回值:
| 类型 | 说明 |
|---|---|
| boolean | - true:设备具备短信发送和接收能力 - false:设备不具备短信发送和接收能力 |
let result = sms.hasSmsCapability();
console.log(`hasSmsCapability: ${JSON.stringify(result)}`);
ShortMessage
短信实例。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 参数名 | 类型 | 说明 |
|---|---|---|
| hasReplyPath | boolean | 收到的短信是否包含“TP-Reply-Path”,默认为false。 “TP-Reply-Path”:设备根据发送SMS消息的短消息中心进行回复。 |
| isReplaceMessage | boolean | 收到的短信是否为“替换短信”,默认为false。 “替换短信”有关详细信息,参见 “3GPP TS 23.040 9.2.3.9”。 |
| isSmsStatusReportMessage | boolean | 当前消息是否为“短信状态报告”,默认为false。 “短信状态报告”是一种特定格式的短信,被用来从Service Center到Mobile Station传送状态报告。 |
| messageClass | [ShortMessageClass] | 短信类型。 |
| pdu | Array | SMS消息中的协议数据单元 (PDU)。 |
| protocolId | number | 发送短信时使用的协议标识。 |
| scAddress | string | 短消息服务中心(SMSC)地址。 |
| scTimestamp | number | SMSC时间戳。 |
| status | number | SMS-STATUS-REPORT消息中的短信状态指示短信服务中心(SMSC)发送的短信状态。 |
| visibleMessageBody | string | 短信正文。 |
| visibleRawAddress | string | 发送者地址。 |
ShortMessageClass
短信类型。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 名称 | 值 | 说明 |
|---|---|---|
| UNKNOWN | 0 | 未知类型。 |
| INSTANT_MESSAGE | 1 | 即时消息,收到后立即显示。 |
| OPTIONAL_MESSAGE | 2 | 存储在设备或SIM卡上的短信。 |
| SIM_MESSAGE | 3 | 包含SIM卡信息的短信,需要存储在SIM卡中。 |
| FORWARD_MESSAGE | 4 | 要转发到另一台设备的短信。 |
SendMessageOptions
发送短信的参数和回调。根据SendMessageOptions中的可选参数content的值判断短信类型。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slotId | number | 是 | 用于发送短信的SIM卡槽ID: - 0:卡槽1 - 1:卡槽2 |
| destinationHost | string | 是 | 短信的发送地址。 |
| content | string | Array | 是 |
| serviceCenter | string | 否 | 短信中心地址。默认使用SIM卡中的短信中心地址。 |
| destinationPort | number | 否 | 如果发送数据消息,destinationPort 是必需的。否则是可选的。 |
| sendCallback | AsyncCallback<[ISendShortMessageCallback]> | 否 | 短信发送结果回调,返回短信发送的结果,参考[ISendShortMessageCallback]。 |
| deliveryCallback | AsyncCallback<[IDeliveryShortMessageCallback]> | 否 | 短信送达结果回调,返回短信递送报告,参考[IDeliveryShortMessageCallback]。 |
ISendShortMessageCallback
回调实例。返回短信发送结果、存储已发送短信的URI和是否为长短信的最后一部分。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| isLastPart | boolean | 否 | 指定这是否是长短信的最后一部分。true表示这是长短信的最后一部分,false表示不是。默认为false。 |
| result | [SendSmsResult] | 是 | 短信发送结果。 |
| url | string | 是 | 存储发送短信的URI。 |
IDeliveryShortMessageCallback
回调实例。返回短信送达报告。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pdu | Array | 是 | 短信送达报告。 |
SendSmsResult
短信发送结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。
| 名称 | 值 | 说明 |
|---|---|---|
| SEND_SMS_SUCCESS | 0 | 发送短信成功。 |
| SEND_SMS_FAILURE_UNKNOWN | 1 | 发送短信失败,原因未知。 |
| SEND_SMS_FAILURE_RADIO_OFF | 2 | 发送短信失败,原因为调制解调器关机。 |
| SEND_SMS_FAILURE_SERVICE_UNAVAILABLE | 3 | 发送短信失败,原因为网络不可用、不支持发送或接收短信。 |
相关文章:
鸿蒙开发电话服务:【 @ohos.telephony.sms (短信服务)】
短信服务 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import sms from ohos.telephony.sms;sms.createMessage createMessage(pdu: Array, specification: string, callback: Asy…...
算法02 递归算法及其相关问题【C++实现】
递归 在编程中,我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是:通常把一个大型的复杂问题,转变成一个与原问题类似的,规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…...
Sermant标签路由能力在同城双活场景的应用
作者:聂子雄 华为云高级软件工程师 摘要:目前应用上云已成为趋势,用户也对应用在云上的高可靠方案有更高追求,目前同城双活场景作为应用高可靠方案中的一种常见实践方案,对微服务流量提出了数据中心亲和性的要求&…...
javascript-obfuscator混淆
安装 npm install javascript-obfuscator -g 配置 重度混淆,性能低 性能下降50-100% { "compact": true, "controlFlowFlattening": true, "controlFlowFlatteningThreshold": 0.75, // 设置为0到1之间的值 "deadCodeI…...
GitHub项目里的api
在一个GitHub项目中提到的"api"通常指的是该项目提供的应用程序编程接口(Application Programming Interface)。这意味着该项目包含了一套规则和工具,允许其他开发者通过代码调用该接口来与项目功能互动、获取数据或执行特定任务。…...
k8s可练习实验分享
实验环境介绍:单master节点+3node节点 环境已提前配置完毕,如果你环境还未做,请移步 k8s集群V1.27.3安装 在 k8s 上可以做许多实验来提升你的动手能力和理解。以下是一些常见且有用的实验项目: 1、部署一个简单的应用…...
浏览器支持http-flv协议
Google Chrome 浏览器和Microsoft Edge 浏览器原生并不支持 HTTP-FLV 协议。HTTP-FLV 主要与 Flash Player 相关,而 Flash Player 已经在 2020 年底停止支持,并且 Microsoft Edge 也逐步淘汰了对 Flash 的支持。 flv.js 利用 HTML5 和 Media Source Exte…...
一千题,No.0077(计算谱半径)
在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的 n 个复数空间的特征值 { a1b1i,⋯,anbni },它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模。 现在给定一些复数空间的特征值&a…...
安卓/iOS/Linux系统影音边下边播P2P传输解决方案
在当今的数字时代,IPTV 影音行业正经历着快速的发展和变革,但影音行业的流量带宽成本一直很高,有没有什么办法既能保证现有的用户观看体验,又能很好降低流量带宽成本呢? P2P技术可能是一个很好的选择,它不仅仅可以提…...
STORM论文阅读笔记
这是篇NIPS2023的 world model 论文文章提出,WM的误差会在训练过程中积累从而影响policy的训练,向WM中加噪声可以改善这一点。其他的流程和IRIS差不多,差别在以下几点: image encoder,IRIS用的VQVAE, 本文用的是VAE&am…...
Web前端遇到的难题:挑战与突破之路
Web前端遇到的难题:挑战与突破之路 在快速发展的互联网时代,Web前端技术作为连接用户与应用程序的桥梁,扮演着举足轻重的角色。然而,在实际开发中,Web前端开发者往往会遇到诸多难题。本文将从四个方面、五个方面、六个…...
C#防止多次注册事件
事件声明和使用部分的代码,防止多次注册事件主要通过判断事件中类型的委托实例是否为空实现 public class ReRegisterEvent {public delegate void Mydelegate(string message);private Mydelegate? mydel;public event Mydelegate Myevent{add{if (mydel null){…...
【UML用户指南】-16-对高级结构建模-构件
目录 1、概念 2、构件与接口 3、可替换性 4、组织构件 5、端口 6、内部结构 6.1、部件 6.2、连接件 7、常用建模技术 7.1、对结构类建模 7.2、对API建模 构件是系统中逻辑的并且可替换的部分,它遵循并提供对一组接口的实现。好的构件用定义良好的接口来定…...
双Token方案实现Token自动续期(基于springboot+vue前后端分离项目)
文章目录 前言一、双Token方案介绍1. 令牌类型与功能2.双Token方案的优点3.实现流程 二、具体实现1.后端实现1.1 jwt工具类1.2 响应工具类1.3 实体类1.4 过滤器1.5 controller1.6 启动类 2、前端实现2.1 登录页面2.2 index页面2.3 请求拦截器和响应拦截器 效果展示 前言 更多j…...
别太小看“静态免杀“
0x01 简述 免杀总体来说可分为两种,静态免杀/动态免杀。往往来说,我们更注重于在内部代码层面实现一些免杀技巧,但在有些时候,动态免杀静态免杀以"打组合拳"的方式效果往往会更出人所料。 当我们的程序生成后…...
SQL server 内连接 左连接 右连接 全连接 语句
在SQL Server中,连接(JOIN)操作用于从两个或多个表中检索相关数据。内连接、左连接、右连接和全连接是最常用的几种连接类型。下面详细介绍每种连接的用法和区别: 1. 内连接 (INNER JOIN) 内连接只返回两个表中满足连接条件的匹…...
k8s中的pod域名解析失败定位案例
问题描述 我在k8s中启动了一个Host网络模式的pod,这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台,查看/etc/resolv.conf,发现nameserver配的有问题。这里我预期的nameserver应该使用宿主机的&…...
jingxiang制作
文章目录 jingxiang制作为什么需要jingxiang制作如何进行jingxiang制作 快照方式制作jingxiang制作命令do cker commit 快照制作jingxiang创建临时工作目录编写一个实例代码启动一个容器替换国内软件源安装编译软件源代码拷贝到容器中编译运行提交为一个jingxiang测试是否可以正…...
【数据结构】线性表之《顺序表》超详细实现
顺序表 一.数据结构1.逻辑结构2.物理结构 二.顺序表的分类1.静态顺序表2.动态顺序表 三.顺序表的实现1.创建顺序表2.初始化顺序表3.判断是否扩容4.打印顺序表5.插入操作1.头插2.尾插3.按照下标插入 6.删除操作1.头删2.尾删3.按照下标删除 7.查找数据8.修改数据9.清空顺序表10.销…...
开源模型应用落地-音乐生成模型-suno/bark深度使用-AIGC应用探索(六)
一、前言 学习音乐生成模型具有极其重要的价值。通过对音乐生成模型的深入学习,我们能够探索到音乐创作的全新边界和可能性。它不仅可以开启一扇通往无限音乐创意的大门,让我们领略到科技与艺术完美融合所带来的震撼与惊喜,还能帮助我们在音乐领域实现前所未有的突破和创新。…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用
1 论文信息 FBRT-YOLO(Faster and Better for Real-Time Aerial Image Detection)是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架,发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究,重点解决…...
全面解析网络端口:概念、分类与安全应用
在计算机网络的世界里,数据的传输与交互如同一场繁忙的物流运输,而网络端口就是其中不可或缺的 “货运码头”。无论是日常浏览网页、收发邮件,还是运行各类网络服务,都离不开网络端口的参与。本文将深入介绍网络端口的相关知识&am…...
部署DNS从服务器
部署DNS从服务器的目的 DNS域名解析服务中,从服务器可以从主服务器上获得指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。 注意…...
豆瓣图书评论数据分析与可视化
【题目描述】豆瓣图书评论数据爬取。以《平凡的世界》、《都挺好》等为分析对象,编写程序爬取豆瓣读书上针对该图书的短评信息,要求: (1)对前3页短评信息进行跨页连续爬取; (2)爬取…...
