posted by 네코냥이 2015. 6. 9. 12:23


메시지 수신을 처리하는 브로드캐스트 리시버에서 getResultCode()의 결과가

0으로 수신되는 경우가 특정 폰에 대해서 발생하였다.


원인은 정확히 파악은 안됬지만, PendingResult 에 관련된 에러이다.

http://developer.android.com/reference/android/content/BroadcastReceiver.PendingResult.html


SmsManager.sendTextMessage 메소드에 사용되는 PendingIntent 의 Context와

실제 브로드캐스트가 갖고 있는 Context가 다른 경우, (특정폰에서) 이러한 에러가 발생한다. 


이 현상을 고치기 위해서는 

메시지 발신부와 수신부를 동일한 Context 로 작동하도록 해야한다. 


Message 전송부를 Service로 따로 빼두고, Message 전송결과처리부를 BroadcastReceiver 로 분리를 해두어 작성을 해두었는데, Service 내부의 Context를 이용하여 내부에서 (서비스의) Context.registerReceiver로 등록해주었다. 

(전역적으로 작동하던 리시버를 Service의 Context로 종속시켰다. 물론 메시지 발송시에 PendingIntent도 Service의 Context를 이용한다.)