鸿蒙开发电话服务:【 @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应用探索(六)
一、前言 学习音乐生成模型具有极其重要的价值。通过对音乐生成模型的深入学习,我们能够探索到音乐创作的全新边界和可能性。它不仅可以开启一扇通往无限音乐创意的大门,让我们领略到科技与艺术完美融合所带来的震撼与惊喜,还能帮助我们在音乐领域实现前所未有的突破和创新。…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...