2009-06-13 36 views
24

私はBroadcastReceiverを作成し、android.provider.Telephony.SMS_RECEIVEDアクションフィルタを設定しました。電話というテキストを受信するたびに呼び出されるように、アクションフィルタが設定されています。送信済みSMSメッセージのAndroid放送受信機?

電話番号(好ましくはそれを送信するアプリケーションとは独立している)というテキストを送信すると、私のアプリケーションが通知されるようなイベント/アクションまたは他の方法はありますか?

私が見る唯一の選択肢は、コンテンツプロバイダーをcontent://sms/sentにポーリングすることです。これはアプリケーションがそこに配置しないことを選択できるため、すべての送信テキストを私に渡すことさえありません。

+0

SMSメッセージ(android.telephony.gsm.SmsManager)を送信するAPIが、送信が成功するか失敗するかを開発者がカスタムインテントを指定できるようにするため、送信された単一のSMSメッセージを聞くことはできません"意図。 – Henning

+0

こんにちはJosef、私はこれでこれ以上の進歩をしたトゥーを持っているのだろうか?私は現在、コンテンツオブザーバを介して送信されているメッセージを聞くことができますが、SMSがGSM/CDMAネットワーク経由で送信されるのを止めて、代わりにデータ接続経由で送信したいと考えています。 SMSがGSM/CDMAで送信されないようにブロックする方法についての洞察はありますか? –

答えて

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

こんにちはJosef、 私はtouがこれ以上進歩を遂げたのだろうと思っていますか?私は現在、コンテンツオブザーバを介して送信されているメッセージを聞くことができますが、SMSがGSM/CDMAネットワーク経由で送信されるのを止めて、代わりにデータ接続経由で送信したいと考えています。 SMSがGSM/CDMAで送信されないようにブロックする方法についての洞察はありますか? –

+1

いいえ、残念ながら。しかし、私は*メッセージをブロックすることはもっと厄介なものになるだろうと思う。私が何かを考えたら教えてあげましょう。その間、stackoverflow.comの質問をしてみてください;-) –

+0

もちろん、ContentObserverは実際にSMS/MMSコンテンツストアを使用するアプリケーションでうまくいきます。どのメッセージングアプリ(およびすべての悪意のあるアプリ)がしないのか。 – Phil

関連する問題