您的位置:首页 > 移动开发 > Android开发

android 发送短信的两种方式,以及接收报告和发送报告

2017-02-16 17:39 573 查看
Andye
停下休息的时候不要忘记别人还在奔跑!

博客园
首页
新随笔
联系
订阅 随笔-152  文章-2  评论-236 

android 发送短信的两种方式,以及接收报告和发送报告

 
         android发送短信,以及接收报告和发送报告

         android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下:

   一、调起系统发短信功能

             代码如下:

/**
* 调起系统发短信功能
* @param phoneNumber 发送短信的接收号码
* @param message     短信内容
*/
public void SendSMS(String phoneNumber,String message){
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body", message);
startActivity(intent);
}


  二、调用系统短信接口直接发送短信

                  首先先介绍一下,发送短信相关的api,主要依靠的是

sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

destinationAddress      发送短信的地址(也就是号码)
scAddress               短信服务中心,如果为null,就是用当前默认的短信服务中心
text                    短信内容
sentIntent              如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去成功的结果代码是Activity.RESULT_OK,或者下面这些错误之一  :RESULT_ERROR_GENERIC_FAILURE,RESULT_ERROR_RADIO_OFF,RESULT_ERROR_NULL_PDU等
通俗点说: 发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理   即,这个意图包装了短信发送状态的信息
deliveryIntent          如果不为null,当这个短信发送到接收者那里,这个
4000
PendtingIntent会被广播,状态报告生成的pdu(指对等层次之间传递的数据单位)会拓展到数据("pdu")
通俗点就是:发送 -->中国电信 --> 中国电信发送成功 --> 返回对方是否收到这个信息 --> 后续处理  即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。


                     
                  正式开始操作

                  

                1.首先要添加权限!

                      

<uses-permission android:name="android.permission.SEND_SMS" />


             2.发送短信的核心代码:

               (1)如果你不需要发送报告,那么直接使用:

/**
* 直接调用短信接口发短信,不含发送报告和接受报告
*
* @param phoneNumber
* @param message
*/
public void sendSMS(String phoneNumber, String message) {
// 获取短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
// 拆分短信内容(手机短信长度限制)
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, null, null);
}
}


             (2)如果你需要发送报告和接收报告,那么我们开始:

 

             我们先定义两个接受方法,用作接收发送报告以及接收报告

                 发送报告

//处理返回的发送状态
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
Intent sentIntent = new Intent(SENT_SMS_ACTION);
PendingIntent sendIntent= 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 backIntent= 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));


 

            发送短信代码:

/**
* 调用短信接口发短信,含接收报告和发送报告
*
* @param phoneNumber
* @param message
*/
public void sendSMS(String phoneNumber, String message) {
// 获取短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
// 拆分短信内容(手机短信长度限制)
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, sendIntent, backIntent);
}
}



如果,这篇博客帮您解决了问题,不妨点击一下右下角的【推荐】。

如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。

因为,我的热情需要您的肯定和支持! 

感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!

分类:
Android开发

好文要顶
关注我
收藏该文








Andye
关注 - 37
粉丝 - 244

+加关注

1
0

«上一篇:输出100-200之间的所有素数并求和程序
»下一篇:Textview文字监控(输入到某个字符后,进行操作)

posted @ 2013-10-28 13:59
Andye 阅读(15133) 评论(1)编辑

收藏

评论列表

  
#1楼33027132015/11/10
16:28:32 2015-11-10 16:28
wuball
 

发送后删除呢?
支持(0)反对(0)

刷新评论刷新页面返回顶部

注册用户登录后才能发表评论,请
登录 或 注册,访问网站首页。

<
c6fb
div class="ad_text_commentbox" id="ad_text_under_commentbox">
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【秘密】藏在春节红包里的技术秘密
【活动】一元专享1500元微软智能云Azure





最新IT新闻:

· 去年5分钟就卖完的微软Build大会门票 今年却花了8小时

· 增强现实技术让攀岩运动变成现实游戏

· 马斯克对人类未来四大预测:城市将位于地下

· "苹果36技术"引海量刷单:致iOS手游10亿美元坏账

· 人人游戏挂牌新三板 5年未出新品经营吃老本

»
更多新闻...





最新知识库文章:
·
「代码家」的学习过程和学习经验分享

· 写给未来的程序媛

· 高质量的工程代码为什么难写

· 循序渐进地代码重构

· 技术的正宗与野路子

» 更多知识库文章...

公告

      Andye,专注于移动互联网领域产品的研究和开发!
      一个热爱移动互联网,用心生活的coder.

      爱好运动、爬山、摄像、更爱好双节棍,真诚愿与你做朋友!

      QQ:1329300341

      E-mail:yejiurui@126.com

      >15小时/天 在线

昵称:Andye

园龄:4年4个月

粉丝:244

关注:37
+加关注

搜索

 
 

常用链接

我的随笔
我的评论
我的参与
最新评论
我的标签

最新随笔

1. eclipse 和 android studio 编译时报 Unsupported major.minor version 52.0错解决办法
2. Git – fatal: Unable to create ‘/.git/index.lock’: File exists错误解决办法
3. android中xmlns:tools属性详解
4. Android屏幕适配的一些常识
5. 写给程序员和UI--Android的切图标准
6. Android webView打不开网页的解决办法
7. Dalvik VM (DVM) 与Java VM (JVM)之间有哪些区别?
8. 江豚科技|专业移动APP开发与移动互联网解决方案
9. 【江豚科技】喜大普奔, 江豚科技全新响应式网站强势上线!伙伴们,快来围观吧!
10. 使用Android Studio打Andorid apk包的流程

我的标签

Android(12)
Andye(11)
应用(3)
检测手机当前网络(2)
APN网络(2)
divider color(1)
EditText(1)
log管理(1)
spinner分割线(1)
点击消失(1)
更多

随笔分类(123)

Android开发(81)
c语言(1)
java(6)
javaweb开发(8)
jni技术(5)
jsp编程(2)
Linux(2)
XML(1)
安卓游戏开发(1)
病毒攻防(1)
多彩生活(12)
数据库(2)
网络工程(1)

随笔档案(152)

2016年10月 (1)
2016年3月 (1)
2015年11月 (4)
2015年10月 (1)
2015年5月 (2)
2015年4月 (2)
2015年2月 (1)
2014年12月 (1)
2014年10月 (1)
2014年7月 (5)
2014年6月 (3)
2014年5月 (5)
2014年3月 (2)
2013年12月 (6)
2013年11月 (8)
2013年10月 (8)
2013年9月 (1)
2013年8月 (7)
2013年7月 (5)
2013年5月 (8)
2013年4月 (3)
2013年3月 (12)
2013年2月 (9)
2013年1月 (12)
2012年12月 (19)
2012年11月 (16)
2012年10月 (9)

文章档案(2)

2013年3月 (2)

相册(4)

life(4)

文件

积分与排名

积分 - 242374
排名 - 658

最新评论

1. Re:终极完美《简易商城购物车系统》揭秘--MVC设计模式
web.xml怎么配置的
--浮生若梦丶
2. Re:Android的Button按钮,ACTION_UP事件不触发解决方案
特此留念,哈哈
--Andye
3. Re:Android的Button按钮,ACTION_UP事件不触发解决方案
2016.10.14再次遇到该问题,成功解决
--Andye
4. Re:Android的Button按钮,ACTION_UP事件不触发解决方案
正解!
--Andye
5. Re:解决eclipse中git插件中的cannot open git-upload-pack问题
mark
--Hotsum

阅读排行榜

1. 深入理解Android的startservice和bindservice(92934)
2. ImageView的属性android:scaleType作用(64710)
3. 史上最易懂的Android jni开发资料--NDK环境搭建(63566)
4. Android中使EditText失去焦点,edittext禁止弹出键盘(58803)
5. Android如何设置TextView的行间距、行高。(58687)

评论排行榜

1. 做程序要踏实,切记不能浮躁。(32)
2. 将win7笔记本电脑变身WiFi热点,让手机、ipad共享上网!(29)
3. 如何通过Html网页调用本地安卓app?(23)
4. 使用json解析国家气象局(天气预报)接口数据(18)
5. 史上最易懂的Android jni开发资料--NDK环境搭建(15)

推荐排行榜

1. 深入理解Android的startservice和bindservice(23)
2. 如何通过Html网页调用本地安卓app?(18)
3. 史上最易懂的Android jni开发资料--NDK环境搭建(18)
4. android布局layout中的一些属性(14)
5. ImageView的属性android:scaleType作用(14)

Copyright ©2017 Andye
站长统计 | 今日IP[902] | 今日PV[992]
| 昨日IP[1205] | 昨日PV[1328] | 当前在线[39] 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: