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를 이용한다.)
'[Debuging Note]' 카테고리의 다른 글
[안드로이드] 베터리 변화 체크 (0) | 2015.08.26 |
---|---|
Daum 지도 API setMapViewEventListener (0) | 2015.07.28 |
github - Protocol https not supported or disabled in libcurl (0) | 2015.06.06 |
NvStreamSvc 원본에서 이벤트 ID 1에 대한 설명을 찾을 수 없습니다. (0) | 2014.10.12 |
세션 "Circular Kernel Context Logger"의 최대 파일 크기에 도달했습니다 (0) | 2014.10.11 |