2012-04-05 6 views
0

새로 수신되는 SMS 메시지를 잡을 수 있습니다. 그러나 멀티 파트 메시지 인 경우 브로드 캐스트 수신기는 여러 번 메시지의 모든 부분을 수신합니다.수신 멀티 파트 SMS 메시지 청취

기본 메시지 앱처럼 전체 메시지를 한 번에받을 수있는 방법이 있습니까?

+1

기본 메시지 앱이 전체 메시지를 한 번에 받음을 어떻게 알 수 있습니까? 나는 그것들을 따로 따로 받고 그것들을 내부적으로 결합 시킨다고 생각한다. – slayton

+0

@slayton 감사합니다. 그래서 나는 datetime을 비교하고 모든 부분을 하나로 결합 할 수 있다고 생각합니다. 이 메시지가 큰 메시지라는 것을 나타내는 플래그가 어딘가에 있다고 생각합니까? –

+0

나는 안다. 그러나 당신은 언제나 안드로이드 소스를보고 그들이 어떻게하는지 볼 수있다. – slayton

답변

3

거룩한 ...!

은 안드로이드 소스 (this file)을 읽은 후, 나는 여기에

내 수신기입니다 ...이 바보 같은 질문은 실현 :

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d(ClassName, "received SMS"); 

    Bundle bundle = intent.getExtras(); 
    if (bundle != null) { 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     // here is what I need, just combine them all :-) 
     final SmsMessage[] messages = new SmsMessage[pdus.length]; 
     Log.d(ClassName, String.format("message count = %s", messages.length)); 
     for (int i = 0; i < pdus.length; i++) { 
      messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
     } 
    } 
}// onReceive() 

죄송합니다 ... 내가 너무 게으른 내 코드 좀 봐. 나는 이미 한 번에 모든 메시지를 받았습니다.

+0

여기에 대한 답변을 확인하십시오. http://stackoverflow.com/questions/7469881/broadcastreceiver-for-multipart-sms 각 인 텐트에는 모든 부분을 함께 포함하는 단일 메시지가 들어 있습니다. 쉽다. –