安卓复习7

本文介绍了如何创建一个Android系统的短信广播接收器,当接收到短信时,系统会发送一个ACTION_SMS_RECEIVED的广播。在`onReceive`方法中,通过检查广播Intent的action并解析pdus数据来获取短信内容。对于特定格式的短信,程序会自动回复。这个例子展示了Android中处理短信事件的基本流程和动态响应机制。
摘要由CSDN通过智能技术生成

安卓复习7

下面是接受短消息的广播接收者

public class ImcomingSMSReceiver extends BroadcastReceiver{
   private static final String String_q = "@echo";
   private static final String RECEIVED_SMS="android.provider.Telephony.SMS_RECEIVED";
   @Override
   public void onReceive(Context context, Intent intent) {
      
	//判断该意图的action属性是不是RECEIVED_SMS
      if(intent.getAction().equals(RECEIVED_SMS)){
         //通过静态getDefault()方法创建SmsManger的实例
         SmsManager smsManager= SmsManager.getDefault();
	
         Bundle bundle = intent.getExtras();
         if(bundle!=null){
         	//从bundle中获取puds,它是一个Object类型的数组
            Object[] pdus  = (Object[])bundle.get("pdus");
            SmsMessage[] messages = new SmsMessage[pdus.length];
            for(int i=0;i<pdus.length;i++){
               //每一个object都是一个byte[]字节数组,每一项为一条短信
               messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
            }
            for(SmsMessage message:messages){
               String msg = message.getMessageBody();
               String to = message.getOriginatingAddress();
               String text = "from:"+to+"message:"+msg;
               Toast t = Toast.makeText(context, text, Toast.LENGTH_LONG);
               t.show();
               if(msg.toLowerCase().startsWith(String_q)){
                  String out = msg.substring(String_q.length());
				  //发送文本消息
                  smsManager.sendTextMessage(to, null, out, null, null);                  
               }
            }
         }
      }      
   }
}

当系统收到短信时,会发出一个action名称为Android.provier.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称 “pdus”即可从Intent中获取短信内容。
pdus是一个object类型的数组,每一个object都是一个byte[]字节数组,每一项为一条短信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值