android发送短信

来源:互联网 发布:个人web服务器软件 编辑:程序博客网 时间:2024/05/17 00:53

利用类 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 {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubtry {        /* 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 0
原创粉丝点击