欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中可以通过两种方式调用接口发送短信

程序员文章站 2023-11-30 23:22:10
第一:调用系统短信接口直接发送短信;主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 smsmanager smsmanager = smsmanager....

第一:调用系统短信接口直接发送短信;主要代码如下:

复制代码 代码如下:

//直接调用短信接口发短信
smsmanager smsmanager = smsmanager.getdefault();
list<string> dividecontents = smsmanager.dividemessage(content);
for (string text : dividecontents) {
smsmanager.sendtextmessage("150xxxxxxxx", null, text, sentpi, deliverpi);
}

第二:调起系统发短信功能;主要代码如下:
复制代码 代码如下:

uri uri = uri.parse("smsto:10010");
intent it = new intent(intent.action_sendto, uri);
it.putextra("sms_body", "102");
activity.startactivity(it);

这里主要讲解第一种方法,其中大部分信息来源于互联网:
获取短信管理器
复制代码 代码如下:

smsmanager smsmanager = smsmanager.getdefault();

拆分短信内容(手机短信长度限制)
复制代码 代码如下:

list<string> dividecontents = smsmanager.dividemessage(content);

发送拆分后的内容
复制代码 代码如下:

list<string> dividecontents = smsmanager.dividemessage(content);
for (string text : dividecontents) {
smsmanager.sendtextmessage("150xxxxxxxx", null, text, sentpi, deliverpi);
}

处理返回的发送状态
复制代码 代码如下:

string sent_sms_action = "sent_sms_action";
intent sentintent = new intent(sent_sms_action);
pendingintent sentpi = pendingintent.getbroadcast(context, 0, sentintent,
0);
// register the broadcast receivers
context.registerreceiver(new broadcastreceiver() {
@override
public void onreceive(context _context, intent _intent) {
switch (getresultcode()) {
case activity.result_ok:
toast.maketext(context,
"短信发送成功", toast.length_short)
.show();
break;
case smsmanager.result_error_generic_failure:
break;
case smsmanager.result_error_radio_off:
break;
case smsmanager.result_error_null_pdu:
break;
}
}
}, new intentfilter(sent_sms_action));

处理返回的接收状态
复制代码 代码如下:

string delivered_sms_action = "delivered_sms_action";
// create the deilverintent parameter
intent deliverintent = new intent(delivered_sms_action);
pendingintent deliverpi = pendingintent.getbroadcast(context, 0,
deliverintent, 0);
context.registerreceiver(new broadcastreceiver() {
@override
public void onreceive(context _context, intent _intent) {
toast.maketext(context,
"收信人已经成功接收", toast.length_short)
.show();
}
}, new intentfilter(delivered_sms_action));

发送短信的参数说明
复制代码 代码如下:

smsmanager.sendtextmessage(destinationaddress, scaddress, text, sentintent, deliveryintent)

-- destinationaddress:目标电话号码
-- scaddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentintent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
-- deliveryintent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。