2011-12-16 28 views
0

我得到這個代碼從什麼地方,一本書,我想:檢索短信息正文是否冗餘?

public class KITSMSReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // get the SMS message that was received 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     String str = ""; 
     Log.d(LOGTAG, "DavyCrockettKingOfTheWildFrontier.onReceive"); 

     if (bundle != null) { 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length]; 
      String senderTel = ""; 
      for (int i = 0; i < msgs.length; i++) { 
       // get the body of the message 
       msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       // get the msg body 
       str += msgs[i].getMessageBody().toString(); 
       str += "\n"; 
      } 
. . . 

...但現在我看我有點迷惑的意見。一行說:「得到消息的正文」,然後下一行說:「得到消息體」。如果這真的是提取SMS主體的「首選方法」,那麼根據評論,爲什麼會出現兩次?

回答

1

這是因爲pdus是使用

msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 

而從該對象抓取下面線實際的消息字符串用於

msgs[i].getMessageBody().toString(); 
1

將其轉化爲SMSMessage對象的陣列的二進制數據我想:

在這裏你會看到消息:身體+電話號碼。這實際上是一個SmsMessage數組。

msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 

在這裏你只包含體(又名消息發送)的實際字符串。

str += msgs[i].getMessageBody().toString();