2012-08-10 9 views
5

いくつかのアンドロイド広告ネットワークsdksで、インテントフィルタなしでBroadcastReceiverと宣言しています。このようなもの:インテントフィルタなしのAndroid BroadcastReceiver

<receiver android:name="com.example.SampleReceiver" /> 

私の推測では、そのようなレシーバはすべての可能なイベントをキャプチャすると考えられます。だから私はそれを自分でやってみましたし、SampleReceiverを作成しました:

public class SampleReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     System.out.println("Event captured: " + intent.getAction()); 
    } 
} 

私は、アプリを立ち上げた自分の携帯電話上のさまざまなアクションを実行して、いくつかのイベントを発射しようとしたとonReceive()が一度も呼び出されていないことに気付きました。

このように、インテントフィルタを使用しないBroadcastReceiverはどのように機能しますか。おそらく、インテントフィルターをコードで作成する必要がありますか?もしそうなら、どうですか?もしそうでなければ、なぜそれはどんな出来事も受けていないのですか?何が起きてる?

+0

あなたは今、偉大な評価の書き込みを持っている:) – Jin35

答えて

0

私は、次の質問/答えはあなたにいくつかの手がかりを与えるべきだと思う:

Create an IntentFilter in android that matches ALL intents

+0

このようなBroadcastReceiverはすべてのイベントを受信して​​いないことを示唆しています。しかし、依然として問題は残っています。そのような受信機は何をしていますか?とにかくありがとう。 –

+0

私は彼らがあなたが見ることができないコードからインテントフィルターをセットアップしたと思う。 – wojciii

+0

しかし、それでも彼らはそれをどうやって答えますか? –

5

あなたには、いくつかのインテントフィルタを持っていない場合は、何かを受け取るための唯一の方法は、明示的に受信機を呼び出すことです。 は、これは次のようになります。

context.sendBroadcast(new Intent(context, MyBroadcastReceiverClass.class)); 

別の男はすでに次の記事で、この質問に答え: https://stackoverflow.com/questions/10051256/broadcast-receiver-not-receiving

+0

コマンドラインでテストしたいなら、 'adb shell am -n com.example/.SampleReceiver'を実行してください。 – Jamby

関連する問題