2014-04-04 3 views
0

이 내 코드 SMS의왜 SmsMessage는 일부 SMS 만 반환합니까?


public class SmsReceiver extends BroadcastReceiver { 

    private static final String PDUS = "pdus"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Object[] pdus = (Object[]) bundle.get(PDUS); 
     return SmsMessage.createFromPdu((byte[]) pdus[0]); 
    } 

} 

소스 텍스트입니다 :

더 악화

은 mailparser 내가이 매우 간단한 단일 부품 테스트 이메일을 보이지만, 1.1, 텍스트에 추가 내가 방법을 message.getMessageBody() 또는 getDisplayMessageBody()를 호출하여 얻을/일반

텍스트 :

더 악화은 mailparser 내가 뭘 잘못 매우 간단한 단일 부품 시험

을 보인다?

P. 행 아웃에 반환 전체 메시지

답변

1

public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    String sender = "", receivedMessage = ""; 
    String MSG_TYPE = intent.getAction(); 
    if (MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) { 
     Object[] pdus = (Object[]) extras.get("pdus"); 

     for (int i = 0; i < pdus.length; i++) { 
      SmsMessage SMessage = SmsMessage 
        .createFromPdu((byte[]) pdus[i]); 
      sender = SMessage.getOriginatingAddress(); 

      receivedMessage += SMessage.getMessageBody().toString(); 

     } 

    } 
} 
1

SMS는 일반적으로 많은 PDU를 구성되어보십시오, 그래서 당신은 다음과 같은 코드가 필요합니다

retMsgs = new SmsMessage[pdus.length]; 
for(int n=0; n < pdus.length; n++) { 
    byte[] byteData = (byte[])pdus[n]; 
    retMsgs[n] = SmsMessage.createFromPdu(byteData); 
} 

을 다음 배열을 돌려줍니다.