2009-06-13 11 views
24

BroadcastReceiver을 만들고 android.provider.Telephony.SMS_RECEIVED 조치 필터로 구성 했으므로 전화 이라는 텍스트를받을 때마다 호출됩니다.보낸 SMS 메시지의 Android 브로드 캐스트 수신기?

(바람직하게는 전송하는 응용 프로그램과 독립적 임) 전화를 보낼 때마다 내 응용 프로그램에 통보하기위한 이벤트/동작 또는 다른 방법이 있습니까?

지금까지 볼 수있는 유일한 옵션은 content://sms/sent에 대한 콘텐츠 제공 업체를 폴링하여 응용 프로그램이 거기에 넣지 않기로 선택할 수 있기 때문에 모든 보낸 텍스트를 제공하지 않는 것입니다.

+0

SMS 메시지 (android.telephony.gsm.SmsManager)를 전송하기위한 API가 개발자가 전송 성공 또는 실패시 사용자 지정 인 텐트를 브로드 캐스트하도록 지정할 수 있으므로 단일 "SMS 메시지를 수신 할 수 없다고 생각합니다. "의도. – Henning

+0

안녕하세요 조세프, 토우가 이것으로 더 발전해 보셨나요? 나는 현재 컨텐트 옵저버를 통해 전송되는 메시지를 청취 할 수 있지만 GSM/CDMA 네트워크를 통해 전송되는 sm을 중단하고 대신 데이터 연결을 통해 전송하려고합니다. GSM/CDMA를 통해 SMS를 보내는 것을 차단하는 방법에 대한 통찰력이 있습니까? –

답변

21

불행하게도 표준 SMS 응용 프로그램이 메시지를 보낼 수있는 SmsManger을 사용하지만 전송 및 전달 의도 (각각 SmsReceiver.classMessageStatusReceiver.class) 콘크리트 내부 클래스를 지정하기 때문에 BroadcastReceiver을 구현하기 (현재) 방법이 없습니다. 아니 그 어떤 위로하지만, 당신이 다음 주석을 찾을 수있는 SMS를 응용 프로그램의 source :

// TODO: Fix: It should not be necessary to 
// specify the class in this intent. Doing that 
// unnecessarily limits customizability.

가장 좋은 대안은 잠재적으로 ContentObserver을 사용하여 폴링 content://sms/sent 것 같다.

+0

안녕하세요 요셉, 나는 이것으로 더 많은 진보를 만들었다 고 궁금한가요? 나는 현재 컨텐트 옵저버를 통해 전송되는 메시지를 청취 할 수 있지만 GSM/CDMA 네트워크를 통해 전송되는 sm을 중단하고 대신 데이터 연결을 통해 전송하려고합니다. GSM/CDMA를 통해 SMS를 보내는 것을 차단하는 방법에 대한 통찰력이 있습니까? –

+1

아니요, 불행하게도. 그러나 나는 메시지를 차단하는 것이 더욱 까다로울 것이라고 생각한다. 내가 뭔가를 생각하면 알려주지. 한편, stackoverflow.com에 대한 질문을 시도하십시오 ;-) –

+0

물론 ContentObserver는 실제로 SMS/MMS Content Store를 실제로 사용하는 응용 프로그램에서만 제대로 재생됩니다. 어떤 메시징 앱 (및 모든 악성 앱)이하지 않는 것. – Phil