android中可以通过两种方式发送短信

http://gundumw100.iteye.com/blog/1774899



第一:调用系统短信接口直接发送短信;主要代码如下:
Java代码 收藏代码
  1. /**
  2. *直接调用短信接口发短信
  3. *@paramphoneNumber
  4. *@parammessage
  5. */
  6. publicvoidsendSMS(StringphoneNumber,Stringmessage){
  7. //获取短信管理器
  8. android.telephony.SmsManagersmsManager=android.telephony.SmsManager.getDefault();
  9. //拆分短信内容(手机短信长度限制)
  10. List<String>divideContents=smsManager.divideMessage(message);
  11. for(Stringtext:divideContents){
  12. smsManager.sendTextMessage(phoneNumber,null,text,sentPI,deliverPI);
  13. }
  14. }


第二:调起系统发短信功能;主要代码如下:
Java代码 收藏代码
  1. /**
  2. *调起系统发短信功能
  3. *@paramphoneNumber
  4. *@parammessage
  5. */
  6. publicvoiddoSendSMSTo(StringphoneNumber,Stringmessage){
  7. if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
  8. Intentintent=newIntent(Intent.ACTION_SENDTO,Uri.parse("smsto:"+phoneNumber));
  9. intent.putExtra("sms_body",message);
  10. startActivity(intent);
  11. }
  12. }


别忘了权限:
<uses-permission android:name="android.permission.SEND_SMS" />

这里主要讲解第一种方法,第一种方法可以监控发送状态和对方接收状态。

处理返回的发送状态:
Java代码 收藏代码
  1. //处理返回的发送状态
  2. StringSENT_SMS_ACTION="SENT_SMS_ACTION";
  3. IntentsentIntent=newIntent(SENT_SMS_ACTION);
  4. PendingIntentsentPI=PendingIntent.getBroadcast(context,0,sentIntent,
  5. 0);
  6. //registertheBroadcastReceivers
  7. context.registerReceiver(newBroadcastReceiver(){
  8. @Override
  9. publicvoidonReceive(Context_context,Intent_intent){
  10. switch(getResultCode()){
  11. caseActivity.RESULT_OK:
  12. Toast.makeText(context,
  13. "短信发送成功",Toast.LENGTH_SHORT)
  14. .show();
  15. break;
  16. caseSmsManager.RESULT_ERROR_GENERIC_FAILURE:
  17. break;
  18. caseSmsManager.RESULT_ERROR_RADIO_OFF:
  19. break;
  20. caseSmsManager.RESULT_ERROR_NULL_PDU:
  21. break;
  22. }
  23. }
  24. },newIntentFilter(SENT_SMS_ACTION));


处理返回的接收状态 :
Java代码 收藏代码
  1. //处理返回的接收状态
  2. StringDELIVERED_SMS_ACTION="DELIVERED_SMS_ACTION";
  3. //createthedeilverIntentparameter
  4. IntentdeliverIntent=newIntent(DELIVERED_SMS_ACTION);
  5. PendingIntentdeliverPI=PendingIntent.getBroadcast(context,0,
  6. deliverIntent,0);
  7. context.registerReceiver(newBroadcastReceiver(){
  8. @Override
  9. publicvoidonReceive(Context_context,Intent_intent){
  10. Toast.makeText(context,
  11. "收信人已经成功接收",Toast.LENGTH_SHORT)
  12. .show();
  13. }
  14. },newIntentFilter(DELIVERED_SMS_ACTION));


发送短信的参数说明:
Java代码 收藏代码
  1. smsManager.sendTextMessage(destinationAddress,scAddress,text,sentIntent,deliveryIntent)

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

更多相关文章

  1. android中去掉标题栏和状态栏
  2. Android 5.1源代码与Nexus设备工厂镜像下载
  3. android 判断网络状态
  4. Android 自音乐播放器源代码
  5. 【黑马Android】(02)短信发送器/布局演示/android下单位/android
  6. Android实现简单短信发送器
  7. android中去掉listview某人选中高亮状态
  8. 让Android支持透明状态栏
  9. Android Jni代码示例讲解

随机推荐

  1. Android的apk安装时签名相同冲突解决
  2. (转)Activity的详解
  3. Git使用规范 Android(安卓)版
  4. 2014-10-25Android学习--------Android应
  5. Android平台入门介绍
  6. 本土企业如何在智能时代的“端云整合”大
  7. Android(安卓)字符串应用浅析
  8. Android学习笔记——xml布局属性
  9. Android(安卓)使用SQLCipher对sqlite进行
  10. Android的Widget编写实例