2011-12-16 14 views
0

が、私はどこからこのコードを持って、この本は私が思う:このSMSメッセージ本文の取得は冗長ですか?

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"; 
      } 
. . . 

...しかし、今、私は少し酔っぱらってるのコメントを見て。 1行に「メッセージ本文を取得する」と表示され、次の行に「メッセージ本文を取得する」と表示されます。これが実際にSMS本体を抽出するための「好ましい方法」である場合、コメントによれば、なぜ2回行われるのでしょうか?

答えて

1

pdus

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

使用され、このオブジェクトからライン以下実際のメッセージ文字列をフェッチするながら

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

を用いSMSMessageオブジェクトの配列に変換されたバイナリデータであるためであるらしいです。

ここでは、本文と電話番号のメッセージが表示されます。これは実際にSmsMessage配列です。

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

ここでは、本文(送信されたメッセージ)のみを含む実際のStringを取得します。

str += msgs[i].getMessageBody().toString(); 
関連する問題