android发送短信

利用类 SmsManager 发送信息, smsManager 为 SmsManager 一个默认的实例. 

SmsManager smsManager = SmsManager.getDefault();
 smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent) 


destinationAddress: 收件人号码 
  scAddress: 短信中心服务号码, 这里设置为null 
  text: 发送内容
  sentIntent: 发送短信结果状态信号(是否成功发送),new 一个Intent , 操作系统接收到信号后将广播这个Intent.此过程为异步.
  deliveryIntent: 对方接收状态信号(是否已成功接收).


  由于需要用到系统发送信息功能, 要在AndroidMainfest.xml 加入 

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

监听是否发送成功需要监听两个广播

	private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
	private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";

注册和解注册广播

private void registSMSSendReveiver() {
    /* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */
		IntentFilter mFilter01;
		mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
		mReceiver01 = new mServiceReceiver();
		registerReceiver(mReceiver01, mFilter01);

    /* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */
		mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
		mReceiver02 = new mServiceReceiver();
		registerReceiver(mReceiver02, mFilter01);
	}
	public void unregisterSMSSendReceiver() {
		unregisterReceiver(mReceiver01);
		unregisterReceiver(mReceiver02);
	}

发送短信

private void sendSMS(String strDestAddress, String strMessage){
		android.telephony.gsm.SmsManager smsManager = android.telephony.gsm.SmsManager.getDefault();
    /* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
		Intent itSend = new Intent(SMS_SEND_ACTIOIN);
		Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);
          /* sentIntent参数为传送后接受的广播信息PendingIntent */
		PendingIntent mSendPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itSend, 0);
          /* deliveryIntent参数为送达后接受的广播信息PendingIntent */
		PendingIntent mDeliverPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itDeliver, 0);
          /* 发送SMS短信,注意倒数的两个PendingIntent参数 */
		if(strMessage.length() <= 70) {
			smsManager.sendTextMessage(strDestAddress, null, strMessage, mSendPI, mDeliverPI);
		}else{
			// SmsManger 类中 divideMessage 会将信息按每70 字分割
			ArrayList<String> smsDivs = smsManager.divideMessage(strMessage);
			for(String sms : smsDivs) {
				smsManager.sendTextMessage(strDestAddress, null, strMessage, mSendPI, mDeliverPI);
			}
		}
	}
广播接收类
public class mServiceReceiver extends BroadcastReceiver {
		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			try {
        /* android.content.BroadcastReceiver.getResultCode()方法 */
				switch(getResultCode()) {
					case Activity.RESULT_OK: {
						mMakeTextToast("短信发送成功", true);
						Log.i("msg","短信发送成功");
						break;
					}
					case android.telephony.gsm.SmsManager.RESULT_ERROR_GENERIC_FAILURE: {
						mMakeTextToast("短信发送失败", true);
						Log.i("msg","短信发送失败");
						break;
					}
					case android.telephony.gsm.SmsManager.RESULT_ERROR_RADIO_OFF:
						break;
					case android.telephony.gsm.SmsManager.RESULT_ERROR_NULL_PDU:
						break;
				}
			}
			catch(Exception e) {
				e.getStackTrace();
			}
		}
	}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值