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

第一:调用系统短信接口直接发送短信;主要代码如下:
/** * 直接调用短信接口发短信 * @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, sentPI, deliverPI);  }}


第二:调起系统发短信功能;主要代码如下:
/** * 调起系统发短信功能 * @param phoneNumber * @param message */public void doSendSMSTo(String phoneNumber,String message){if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));          intent.putExtra("sms_body", message);          startActivity(intent);}}


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

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

处理返回的发送状态:
//处理返回的发送状态 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 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 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: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。

更多相关文章

  1. Android中Socket通信之TCP与UDP传输原理
  2. android之HttpURLConnection
  3. android 中调用接口发送短信
  4. android 中调用接口发送短信
  5. android全局处理非捕捉异常
  6. Android(安卓)VoLTE 视频通话是否可用状态读取与监听
  7. android4.4上全屏界面实现禁止状态栏下拉
  8. 删除android系统自带锁屏,导航栏、状态栏、搜索框
  9. Android如何获取SIM卡信息

随机推荐

  1. 关于JTree的文章推荐
  2. 关于SQLite多线程的用法详解
  3. 关于J2ME 3D图形技术的实例详解
  4. c#对xml的CURD操作的代码示例
  5. 详解xml与Java之间的转换
  6. xml在powerbuilder中应用的代码示例
  7. 在asp下通过xml打包网站文件的方法
  8. Android开发中关于2个Xml合并问题的实例
  9. 在xml中写动画的实例详解
  10. 通过javascript xml xsl取值及数据修改第