Android发送长短信


ArrayList < PendingIntent > sentPendingIntents = new ArrayList < PendingIntent >(); ArrayList < PendingIntent > deliveredPendingIntents = new ArrayList < PendingIntent >(); PendingIntent sentPI = PendingIntent . getBroadcast ( mContext , 0 , new Intent ( mContext , SmsSentReceiver . class ), 0 ); PendingIntent deliveredPI = PendingIntent . getBroadcast ( mContext , 0 , new Intent ( mContext , SmsDeliveredReceiver . class ), 0 ); try { SmsManager sms = SmsManager . getDefault (); ArrayList < String > mSMSMessage = sms . divideMessage ( message ); for ( int i = 0 ; i < mSMSMessage . size (); i ++) { sentPendingIntents . add ( i , sentPI ); deliveredPendingIntents . add ( i , deliveredPI ); } sms . sendMultipartTextMessage ( phoneNumber , null , mSMSMessage , sentPendingIntents , deliveredPendingIntents ); } catch ( Exception e ) { e . printStackTrace (); Toast . makeText ( mContext , "SMS sending failed..." , Toast . LENGTH_SHORT ). show (); }

Create a boardcast receiver for sent sms like below.

public class SmsSentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    switch (getResultCode()) {
    case Activity.RESULT_OK:
        Toast.makeText(context,
                "SMS Sent" + intent.getIntExtra("object", 0),
                Toast.LENGTH_SHORT).show();

        break;
    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
        Toast.makeText(context, "SMS generic failure", Toast.LENGTH_SHORT)
                .show();

        break;
    case SmsManager.RESULT_ERROR_NO_SERVICE:
        Toast.makeText(context, "SMS no service", Toast.LENGTH_SHORT)
                .show();

        break;
    case SmsManager.RESULT_ERROR_NULL_PDU:
        Toast.makeText(context, "SMS null PDU", Toast.LENGTH_SHORT).show();
        break;
    case SmsManager.RESULT_ERROR_RADIO_OFF:
        Toast.makeText(context, "SMS radio off", Toast.LENGTH_SHORT).show();
        break;
    }
}

Create another broadcast receiver for sms deliver as below.

public class SmsDeliveredReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
    switch (getResultCode()) {
    case Activity.RESULT_OK:
        Toast.makeText(context, "SMS delivered", Toast.LENGTH_SHORT).show();
        break;
    case Activity.RESULT_CANCELED:
        Toast.makeText(context, "SMS not delivered", Toast.LENGTH_SHORT).show();
        break;
    }
}

}

And finally declare receiver in manifest.

<receiver android:name=".receiver.SmsSentReceiver" >
    </receiver>
    <receiver android:name=".receiver.SmsDeliveredReceiver" >
    </receiver>

转自:http://stackoverflow.com/questions/4774009/broadcast-receiver-with-sendmultiparttextmessage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值