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);     }   } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM