[게시판 검색 모두 마쳤습니다만 초보라 잘 찾지를 못해 글을 올립니다.]

SMS를 받아 특정번호를 걸러서 해당 처리를 해 줄려고 합니다.

이때 몇가지 잘 안되는 점이 있어 질문드립니다. 

받아오는 부분 리시브소스 중 일부입니다.

Object[] pdus = (Object[]) intent.getExtras().get("pdus");
   SmsMessage msgs[] = new SmsMessage[pdus.length];
  
   for (int i = 0; i <msgs.length; i++) {
    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
    phoneNum = msgs[i].getOriginatingAddress();
    msgContent = msgs[i].getMessageBody();
   }

이때
 
1) 모토로이, 모토그램과 같이 모토롤라 폰의 경우 msgs.length가 2일때가 종종 있습니다.
    그래서 로그를 찍어보면 처음 돌때는 문자 내용을 제대로 가져오는 거 같은데 두번째 돌때는 내용이 중간 중간 짤려져서 나옵니다.
     msgs.length 가 1보다 클때는 어떤때인가요? 혹시 문자내용 중에 특수문자가 들어가면 안되는건가요?

2)  에뮬레이터, 넥세서원, 모토로이는 getOriginatingAddress()로 하면 발신자 번호를 제대로 가지고 오는데
     갤럭시S 의 경우는  getOriginatingAddress()로 하니 이상한 번호가 찍히고 getDisplayOriginatingAddress()로 하니
      제대로 나옵니다.
      그런데 옵티머스큐의 경우는 위 두 메소드를 써도 이상한 번호가 나오네요.
      어떻게 처리해야 할까요?  제조사별로 다르게 처리해야 하는게 있나요?  

결론적으로 제조사와 통신사에 관계없이 해당 문자의 발신번호와 문자내용을 알아오고 싶습니다.

몇날몇일을 헤메고 있네요.

고수님들의 조언을 부탁드립니다.