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

来源:互联网 发布:快时尚品牌 知乎 编辑:程序博客网 时间:2024/05/16 09:02

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,当这个短信发送到接收者那里,这个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 Receiverscontext.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 parameterIntent 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)
刷新评论刷新页面返回顶部
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【秘密】藏在春节红包里的技术秘密
【活动】一元专享1500元微软智能云Azure
最新IT新闻:
· 去年5分钟就卖完的微软Build大会门票 今年却花了8小时
· 增强现实技术让攀岩运动变成现实游戏
· 马斯克对人类未来四大预测:城市将位于地下
· "苹果36技术"引海量刷单:致iOS手游10亿美元坏账
· 人人游戏挂牌新三板 5年未出新品经营吃老本
» 更多新闻...
最新知识库文章:
· 「代码家」的学习过程和学习经验分享
· 写给未来的程序媛
· 高质量的工程代码为什么难写
· 循序渐进地代码重构
· 技术的正宗与野路子
» 更多知识库文章...
站长统计 | 今日IP[902] | 今日PV[992] | 昨日IP[1205] | 昨日PV[1328] | 当前在线[39] 
0 0