Android之短信广播接收内容

以下是短信广播接收内容步骤:

1. 常见一个接收类,此类继承 BroadcastReceiver ,需要创建一个action;

2.  需要在AndroidManifest中注册这个接收类(关键字receiver)并为action绑定,最后注册短信接收权限

     <receiver android:name="EX06_01_SMSreceiver">        //继承BroadcastReceiver 的类名

  <!-- 設定要捕捉的訊息名稱為provider中Telephony.SMS_RECEIVED -->
  <intent-filter> 
    <action 
      android:name="android.provider.Telephony.SMS_RECEIVED" />  //在BroadcastReceiver 创建的action
  </intent-filter> 
         </receiver>   
        </application>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 

 

3.  在继承BroadcastReceiver 的类中,复写的onReceive方法的操作

  /* 判断传来的Intent中的Action类型*/

    if (intent.getAction().equals(mACTION)) 
           {       /*创建字符串变量sb*/     

StringBuilder sb = new StringBuilder();      

/*接收由Intent传来的数据*/     

Bundle bundle = intent.getExtras();      

/*判断Intent有无数据*/     

if (bundle != null)      

{        

/* pdus为 android内置短信参数 identifier         

* 通过bundle.get("")返回一包含pdus对象ン*/       

Object[] myOBJpdus = (Object[]) bundle.get("pdus");        

/*构建短信对象array,并根据收到的对象长度来定义array的大小*/       

SmsMessage[] messages = new SmsMessage[myOBJpdus.length];         

for (int i = 0; i<myOBJpdus.length; i++)         {           

messages[i] = SmsMessage.createFromPdu ((byte[]) myOBJpdus[i]);          }        

/* 把传来的短信合并定义在stringbuffer中 */         

for (SmsMessage currentMessage : messages)         {           

sb.append("接收到来自:\n");           

/* 发送人电话号码 */          

sb.append(currentMessage.getDisplayOriginatingAddress());           

sb.append("\n------传来的短信------\n");           

/* 取得传来的信息*/           

sb.append(currentMessage.getDisplayMessageBody());          }        }         

/* 以(Toase)形式展示  */     

Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();      

Intent i = new Intent(context, EX06_01.class);      

/*使指定Activity显示在屏幕栈的最前方*/   

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      

context.startActivity(i);     }   } 

 

posted on 2012-04-09 10:30  lee0oo0  阅读(4276)  评论(0编辑  收藏  举报