Android SMS发送和接收(示例)

参考链接: http://www.cnblogs.com/xirihanlin/archive/2009/10/18/1585624.html

归纳关键点:
1. manifest.xml中必须指明访问SMS的权限
        <uses-permission android:name="android.permission.SEND_SMS">
        </uses-permission>
       
        <uses-permission android:name="android.permission.RECEIVE_SMS" >
        </uses-permission>

2.使用SmsManager类发送短信(观察内部过程,可以注册BroadcastReciver进行观察)
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";
 
        PendingIntent sentPI = PendingIntent. getBroadcast(this, 0,
             new Intent(SENT), 0);
 
        PendingIntent deliveredPI = PendingIntent. getBroadcast(this, 0,
              new Intent(DELIVERED), 0);    

      //注册BroadcastReceiver
        registerReceiver( new BroadcastReceiver(){ }, new IntentFilter(SENT));
        registerReceiver( new BroadcastReceiver(){ }, new IntentFilter());DELIVERED


        SmsManager sms = SmsManager. getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);


3. 注册BroadcastReceiver对象接收消息广播,使用Toast类浮动显示
public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent)
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();       
        SmsMessage[] msgs = null;
        String str = "";           
        if (bundle != null)
        {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get( "pdus");
            msgs = new SmsMessage[pdus.length ];           
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage. createFromPdu((byte[])pdus[i]);               
                str += "SMS from " + msgs[i].getOriginatingAddress();                    
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";       
            }
            //---display the new SMS message---
            Toast. makeText(context, str, Toast.LENGTH_SHORT).show();
        }                        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值