天天看點

android發送短信

1、擷取短信管理器

SmsManager sm = SmsManager.getDefault();

2、切割短信,把長短信分成若幹個小短信

ArrayList smss = sm.divideMessage(content);

3、for循環把集合中所有的短信全部發出去

for(String string : smss){

sm.sendTextMessage(phone,null,string,null,null);

}

4、sendTextMessage參數含義

Parameters

destinationAddress 短信接收人的電話号碼

scAddress 短信服務中心,如果為null,就是用目前預設的短信服務中心

text 短信内容

sentIntent 如果不為null,當短信發送成功或者失敗時,這個PendingIntent會被廣播出去。(我們可以建立一個recevier來通知使用者短信發送成功或者失敗)

成功的結果代碼是Activity.RESULT_OK,

或者下面這些錯誤之一 :

RESULT_ERROR_GENERIC_FAILURE

RESULT_ERROR_RADIO_OFF

RESULT_ERROR_NULL_PDU

示例代碼:

//發送短信函數
private void sendMsgToPerson(Context context, Person p) {
        SmsManager smsManager = SmsManager.getDefault();
        Intent sendIntent = new Intent("SENT_SMS_ACTION");
        PendingIntent pi = PendingIntent.getBroadcast(context, , sendIntent, );
        //person是我自定義的一個類,可以通過getPhnum()來獲得手機号碼
        //短信發送後将會觸發一個廣播,在廣播接收器裡可以判斷發送成功或者失敗
        smsManager.sendTextMessage(p.getPhnum(), null, p.getContent(), pi, null);
    }

//短信發送的廣播接收器
public class sendMsgReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent arg1) {
        if (getResultCode() == Activity.RESULT_OK) {

            Toast.makeText(context, "發送成功", Toast.LENGTH_LONG).show();

        } else {

            Toast.makeText(context, "發送失敗", Toast.LENGTH_LONG).show();

        }
    }