当前位置: 首页 > news >正文

鸿蒙开发电话服务:【 @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

参数:

参数名类型必填说明
pduArray协议数据单元,从收到的信息中获取。
specificationstring短信协议类型。 - 3gpp表示GSM/UMTS/LTE SMS - 3gpp2表示CDMA SMS
callbackAsyncCallback<[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

参数:

参数名类型必填说明
pduArray协议数据单元,从收到的信息中获取。
specificationstring短信协议类型。 - 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

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。 - 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:该接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
slotIdnumberSIM卡槽ID: - 0:卡槽1 - 1:卡槽2
smscAddrstring短信服务中心地址。
callbackAsyncCallback回调函数。

示例:

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:该接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
slotIdnumberSIM卡槽ID: - 0:卡槽1 - 1:卡槽2
smscAddrstring短信服务中心地址。

返回值:

类型说明
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:该接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
slotIdnumberSIM卡槽ID: - 0:卡槽1 - 1:卡槽2
callbackAsyncCallback回调函数。

示例:

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:该接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
slotIdnumberSIM卡槽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。

参数名类型说明
hasReplyPathboolean收到的短信是否包含“TP-Reply-Path”,默认为false。 “TP-Reply-Path”:设备根据发送SMS消息的短消息中心进行回复。
isReplaceMessageboolean收到的短信是否为“替换短信”,默认为false。 “替换短信”有关详细信息,参见 “3GPP TS 23.040 9.2.3.9”。
isSmsStatusReportMessageboolean当前消息是否为“短信状态报告”,默认为false。 “短信状态报告”是一种特定格式的短信,被用来从Service Center到Mobile Station传送状态报告。
messageClass[ShortMessageClass]短信类型。
pduArraySMS消息中的协议数据单元 (PDU)。
protocolIdnumber发送短信时使用的协议标识。
scAddressstring短消息服务中心(SMSC)地址。
scTimestampnumberSMSC时间戳。
statusnumberSMS-STATUS-REPORT消息中的短信状态指示短信服务中心(SMSC)发送的短信状态。
visibleMessageBodystring短信正文。
visibleRawAddressstring发送者地址。

ShortMessageClass

短信类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称说明
UNKNOWN0未知类型。
INSTANT_MESSAGE1即时消息,收到后立即显示。
OPTIONAL_MESSAGE2存储在设备或SIM卡上的短信。
SIM_MESSAGE3包含SIM卡信息的短信,需要存储在SIM卡中。
FORWARD_MESSAGE4要转发到另一台设备的短信。

SendMessageOptions

发送短信的参数和回调。根据SendMessageOptions中的可选参数content的值判断短信类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

参数名类型必填说明
slotIdnumber用于发送短信的SIM卡槽ID: - 0:卡槽1 - 1:卡槽2
destinationHoststring短信的发送地址。
contentstringArray
serviceCenterstring短信中心地址。默认使用SIM卡中的短信中心地址。
destinationPortnumber如果发送数据消息,destinationPort 是必需的。否则是可选的。
sendCallbackAsyncCallback<[ISendShortMessageCallback]>短信发送结果回调,返回短信发送的结果,参考[ISendShortMessageCallback]。
deliveryCallbackAsyncCallback<[IDeliveryShortMessageCallback]>短信送达结果回调,返回短信递送报告,参考[IDeliveryShortMessageCallback]。

ISendShortMessageCallback

回调实例。返回短信发送结果、存储已发送短信的URI和是否为长短信的最后一部分。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

参数名类型必填说明
isLastPartboolean指定这是否是长短信的最后一部分。true表示这是长短信的最后一部分,false表示不是。默认为false。
result[SendSmsResult]短信发送结果。
urlstring存储发送短信的URI。

IDeliveryShortMessageCallback

回调实例。返回短信送达报告。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

参数名类型必填说明
pduArray短信送达报告。

SendSmsResult

短信发送结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称说明
SEND_SMS_SUCCESS0发送短信成功。
SEND_SMS_FAILURE_UNKNOWN1发送短信失败,原因未知。
SEND_SMS_FAILURE_RADIO_OFF2发送短信失败,原因为调制解调器关机。
SEND_SMS_FAILURE_SERVICE_UNAVAILABLE3发送短信失败,原因为网络不可用、不支持发送或接收短信。

相关文章:

鸿蒙开发电话服务:【 @ohos.telephony.sms (短信服务)】

短信服务 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import sms from ohos.telephony.sms;sms.createMessage createMessage(pdu: Array, specification: string, callback: Asy…...

算法02 递归算法及其相关问题【C++实现】

递归 在编程中&#xff0c;我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是&#xff1a;通常把一个大型的复杂问题&#xff0c;转变成一个与原问题类似的&#xff0c;规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…...

Sermant标签路由能力在同城双活场景的应用

作者&#xff1a;聂子雄 华为云高级软件工程师 摘要&#xff1a;目前应用上云已成为趋势&#xff0c;用户也对应用在云上的高可靠方案有更高追求&#xff0c;目前同城双活场景作为应用高可靠方案中的一种常见实践方案&#xff0c;对微服务流量提出了数据中心亲和性的要求&…...

javascript-obfuscator混淆

安装 npm install javascript-obfuscator -g 配置 重度混淆&#xff0c;性能低 性能下降50-100% { "compact": true, "controlFlowFlattening": true, "controlFlowFlatteningThreshold": 0.75, // 设置为0到1之间的值 "deadCodeI…...

GitHub项目里的api

在一个GitHub项目中提到的"api"通常指的是该项目提供的应用程序编程接口&#xff08;Application Programming Interface&#xff09;。这意味着该项目包含了一套规则和工具&#xff0c;允许其他开发者通过代码调用该接口来与项目功能互动、获取数据或执行特定任务。…...

k8s可练习实验分享

实验环境介绍&#xff1a;单master节点&#xff0b;3node节点 环境已提前配置完毕&#xff0c;如果你环境还未做&#xff0c;请移步 k8s集群V1.27.3安装 在 k8s 上可以做许多实验来提升你的动手能力和理解。以下是一些常见且有用的实验项目&#xff1a; 1、部署一个简单的应用…...

浏览器支持http-flv协议

Google Chrome 浏览器和Microsoft Edge 浏览器原生并不支持 HTTP-FLV 协议。HTTP-FLV 主要与 Flash Player 相关&#xff0c;而 Flash Player 已经在 2020 年底停止支持&#xff0c;并且 Microsoft Edge 也逐步淘汰了对 Flash 的支持。 flv.js 利用 HTML5 和 Media Source Exte…...

一千题,No.0077(计算谱半径)

在数学中&#xff0c;矩阵的“谱半径”是指其特征值的模集合的上确界。换言之&#xff0c;对于给定的 n 个复数空间的特征值 { a1​b1​i,⋯,an​bn​i }&#xff0c;它们的模为实部与虚部的平方和的开方&#xff0c;而“谱半径”就是最大模。 现在给定一些复数空间的特征值&a…...

安卓/iOS/Linux系统影音边下边播P2P传输解决方案

在当今的数字时代&#xff0c;IPTV 影音行业正经历着快速的发展和变革&#xff0c;但影音行业的流量带宽成本一直很高&#xff0c;有没有什么办法既能保证现有的用户观看体验&#xff0c;又能很好降低流量带宽成本呢? P2P技术可能是一个很好的选择&#xff0c;它不仅仅可以提…...

STORM论文阅读笔记

这是篇NIPS2023的 world model 论文文章提出&#xff0c;WM的误差会在训练过程中积累从而影响policy的训练&#xff0c;向WM中加噪声可以改善这一点。其他的流程和IRIS差不多&#xff0c;差别在以下几点&#xff1a; image encoder&#xff0c;IRIS用的VQVAE, 本文用的是VAE&am…...

Web前端遇到的难题:挑战与突破之路

Web前端遇到的难题&#xff1a;挑战与突破之路 在快速发展的互联网时代&#xff0c;Web前端技术作为连接用户与应用程序的桥梁&#xff0c;扮演着举足轻重的角色。然而&#xff0c;在实际开发中&#xff0c;Web前端开发者往往会遇到诸多难题。本文将从四个方面、五个方面、六个…...

C#防止多次注册事件

事件声明和使用部分的代码&#xff0c;防止多次注册事件主要通过判断事件中类型的委托实例是否为空实现 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建模 构件是系统中逻辑的并且可替换的部分&#xff0c;它遵循并提供对一组接口的实现。好的构件用定义良好的接口来定…...

双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 简述 免杀总体来说可分为两种&#xff0c;静态免杀/动态免杀。往往来说&#xff0c;我们更注重于在内部代码层面实现一些免杀技巧&#xff0c;但在有些时候&#xff0c;动态免杀静态免杀以"打组合拳"的方式效果往往会更出人所料。 当我们的程序生成后&#xf…...

SQL server 内连接 左连接 右连接 全连接 语句

在SQL Server中&#xff0c;连接&#xff08;JOIN&#xff09;操作用于从两个或多个表中检索相关数据。内连接、左连接、右连接和全连接是最常用的几种连接类型。下面详细介绍每种连接的用法和区别&#xff1a; 1. 内连接 (INNER JOIN) 内连接只返回两个表中满足连接条件的匹…...

k8s中的pod域名解析失败定位案例

问题描述 我在k8s中启动了一个Host网络模式的pod&#xff0c;这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台&#xff0c;查看/etc/resolv.conf&#xff0c;发现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应用探索(六)

一、前言 学习音乐生成模型具有极其重要的价值。通过对音乐生成模型的深入学习,我们能够探索到音乐创作的全新边界和可能性。它不仅可以开启一扇通往无限音乐创意的大门,让我们领略到科技与艺术完美融合所带来的震撼与惊喜,还能帮助我们在音乐领域实现前所未有的突破和创新。…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...