利用类 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(); } } }