2013-08-19 2 views
1

들어오는 모든 SMS 메시지를 읽어야하는 앱이 있습니다. 나는 BroadcastReceiver을 쓰고 그 의도를 경청하기 위해 등록했다 - android.provider.Telephony.SMS_RECEIVED. 나중에 프로세스가 포 그라운드에있을 때만 브로드 캐스트를 수신 할 수 있다는 것을 깨달았습니다.내 앱이 항상 들어오는 모든 SMS를 확실하게 수신하도록하는 방법은 무엇입니까?

BroadcastReceiver 님의 Javadoc에서 제안한 바에 의하면 나는 Services을 보았습니다. 이것은 유망 해 보이지만 심지어 메모리가 부족한 경우에도이 상황이 발생할 수 있습니다. 또한 사용자가 백그라운드 프로세스를 죽일 수있는 앱을 보았으므로 백그라운드 프로세스를 종료 할 수도있었습니다.

번들 SMS 클라이언트는 SMS 메시지를 항상 수신하고 저장하는 방법을 어떻게 관리합니까?

+0

이렇게하면 도움이 될 것입니다. http://developer.android.com/reference/android/content/Intent.html#ACTION_BOOT_COMPLETED –

+0

@SunilMishra 도움이 될지 모르겠습니다. – AppleGrew

+0

BR에서 'ACTION_BOOT_COMPLETED'에 대한 인 텐트 필터를 설정하면 부트 이벤트가 완료된 후 브로드 캐스트 리시버가 등록됩니다. –

답변

1

수신자를 Android Manifest 파일에 등록해야합니다. 사용자가 앱을 한 번 이상 실행하면 앱이 활성화됩니다. 그러면 수신기에 항상 통보됩니다. 앱이 실행 중이 아니고 SMS가있는 경우에도 Android가 앱을 시작하고 브로드 캐스트를 전송합니다.

Here BroadcastReceiver 수명주기에 대한 자세한 내용을 볼 수 있습니다.

+0

그 동안 겪었지만 검증할만한 텍스트는 볼 수 없습니다. "앱이 실행 중이 아니고 SMS가 있어도 Android는 앱을 시작하고 브로드 캐스트를 전송합니다." – AppleGrew

+1

명시 적으로 어디에도 언급되어 있지 않습니다. 하지만 Eclipse에서 Emulator Control을 사용하여 앱을 중지하고 SMS를 시뮬레이트하면이를 증명할 수 있습니다. 앱이 출시 될 것입니다. 유일한 예외는 주식 Apps 설정을 통해 앱을 강제 종료 할 때입니다. 이 경우 앱이 비활성화되고 BroadcastReceivers도 비활성화됩니다. 다시 활성화하려면 앱을 새로 시작하면됩니다. –

+0

좋아요,이 경우 매니페스트의 의도를 언급하거나 프로그래밍 방식으로 그렇게하는 것이 필요합니다. – AppleGrew

관련 문제