2012-08-06 2 views
0

현재 SMS_RECEIVED-Flow를 분석하는 프로젝트에서 작업하고 있습니다.자신의 Broadcastreceiver가 시뮬레이션 된 SMS_RECEIVED을 수신하지 못했습니다.

기사 [1]에 따르면 서비스에 대한 명시적인 호출로 SMS_RECEIVED-Broadcast를 시뮬레이션했습니다 : com.android.mms.transaction.SmsReceiverService.

문제는 Android-Emulator와 Nexus가 생성 된 BroadcastReceiver를 기본 SMS-App에만 전달하고 그 이유를 알지 못한다는 것입니다.

동적으로 등록 된 수신자 (가장 높은 우선 순위로 등록 된 모든 수신자와 올바른 인 텐트 필터)를 사용하여 정적으로 등록 된 수신자와 함께 방송을 잡으려고했습니다. 두 가지 방법 모두 정상적인 SMS로 정상적으로 작동하지만 시뮬레이트 된 것은 아닙니다.

그래서 SMS 수신 메커니즘이 작동하는 방식과 내 프로그램이 브로드 캐스트를 수신하지 않는 이유는 누구나 아는 질문입니다. 명시 적으로이 서비스를 호출하는 경우, 방송이 해당 응용 프로그램에 도달 할 수 있도록

[1] http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app

답변

0

SmsRecieverService는 기본 메시징 응용 프로그램의 일부입니다. SMS_RECIEVED 브로드 캐스트는 보호 된 브로드 캐스트이므로 앱에서 브로드 캐스트 할 수 없습니다.

한 가지 방법은 시뮬레이터와 앱 모두에서 브로드 캐스트의 이름을 변경하는 것입니다.

+0

Thx, SMS_RECEIVED 브로드 캐스트가 보호된다는 것을 알고 있었지만 잠시 후 Handcent가 시뮬레이트 된 SMS를 수신했기 때문에 수신 동작을 시뮬레이트 할 수있는 해결 방법이 있기를 바랬습니다 (Handcent 충돌 및 다시 열면 Sms를 받게됩니다.) ... 나는 Handcent가 콘텐츠 제공자로부터 SMS를 받았다고 생각한다. – Chris

+0

사용자 지정 롬이있는 경우 플랫폼 서명으로 앱에 서명 할 수 있습니다. 그러면 방송 할 수 있습니다. – nandeesh

관련 문제