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电源管理简介(下)
  2. Android能够获取到唯一的设备ID吗?
  3. android 状态栏移动到底部
  4. android UI之去掉状态栏
  5. android滑动改变状态栏颜色及透明度
  6. android之同一wifi下两台设备通过UDP进行通讯
  7. Android(安卓)禁止下拉状态栏和底部导航栏的控制
  8. android 发送短信的两种方式
  9. Android设置Button各种状态下背景改变

随机推荐

  1. Android(安卓)动画之Lottie动画使用
  2. Android中的线程模型
  3. Android实现布局全屏
  4. 源码中的@hide注释和{@hide}注释的差异
  5. Android(安卓)开发技术周报 Issue#299
  6. Android中Adapter中edittext,checkbox记住
  7. Android(安卓)小项目之--SQLite 使用法门
  8. Android轮播图控件CustomBanner的使用讲
  9. Android(安卓)Studio中实战演练——绿豆
  10. Android介绍