2012-03-19 9 views
0

ローカルバスシステム用のアプリを作成しようとしています。彼らは4桁の停止IDをテキストにして、次にバスがそこに来るのを見ることができるサービスを持っています。アプリでテキストを受信して​​いますが、他のSMSアプリには表示したくありません

これらのIDは覚えにくいので、ストップの論理名を持つアプリを作っています。クリックすると、正しいIDのSMSが送信されます。

次に、SMS応答を送信します。私の応答に私のアプリケーションに行って、いくつかの解析と素敵なGUIのもので処理されるようにしたいと思います。しかし、システムのSMSアプリもテキストを取得します。私はむしろこの二重の反応を持っていないだろう。

応答は私のアプリケーションに向けられますが、他のものには向かうことはできませんか?

答えて

1

はい、可能です。これは、アプリケーションが最初のSMSを受信確認します

<intent-filter android:priority="999"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
</intent-filter> 

まず、あなたのマニフェストでは、あなたは非常に高い値であるためにあなたの受信機の優先順位を設定する必要があります。次に、SMSを受信して​​処理するコードで、次のコードを入力します。

this.abortBroadcast(); 

これは、他の受信者に送信されるSMSを停止します。

+0

完璧に動作します!ありがとうございました。私は999の代わりに9999を使用しなければなりませんでしたが、GOSMSは999で停止していなかったので、高い優先度も使用する必要があります。 – Khalos

1

と思われます。 BroadcastReceiver

通常の放送がブロックしますが、缶を命じたことができません: アンドロイドで放送の2種類、

  1. 通常放送
  2. 順序放送

Refがあります。


SMSReceiverはオーダーされたブロードキャストです。

void dispatch(Intent intent, String permission) { 
    // Hold a wake lock for WAKE_LOCK_TIMEOUT seconds, enough to give any 
    // receivers time to take their own wake locks. 
    mWakeLock.acquire(WAKE_LOCK_TIMEOUT); 
    mContext.sendOrderedBroadcast(intent, permission, mResultReceiver, 
      this, Activity.RESULT_OK, null, null); 
} 

SMSDispatcher.javaでだから我々は、放送受信機とセットアンドロイドを登録することができます。優先順位をあなたの受信機に大きな数 とabortBroadcast()に。私はそれが動作するかもしれないと思います。

関連する問題