10

私はAndroidプラットフォームを初めて使用します。Androidでブロードキャストレシーバーとインテントフィルターがどのように動作するかを教えてください。簡単な行または例で説明してください。事前に感謝します...

4

3 に答える 3

19

ブロードキャスト レシーバーは、Android プロジェクト内のクラスであり、他のアクティビティによって送信されるすべてのインテントを受信する責任があります。android.content.ContextWreapper.sendBroadcast(Intent intent)

受信アクティビティのマニフェスト ファイルで、ブロードキャスト レシーバー クラスを宣言する必要があります。次に例を示します。

<receiver android:name="xyz.games.pacman.network.MessageListener">
  <intent-filter>
    <action android:name="xyz.games.pacman.controller.BROADCAST" />
  </intent-filter>
</receiver>

ご覧のとおり、ここでインテント フィルターも定義します。つまり、ブロードキャスト レシーバーが受信するインテントを指定します。

次に、BroadcastReceiver を拡張するクラスを定義する必要があります。これは、マニフェスト ファイルで定義したクラスです。

public class MessageListener extends BroadcastReceiver {


    /* (non-Javadoc)
     * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
     */
    @Override
    public void onReceive(Context context, Intent intent) {
...
}

ここでは、フィルターを通過したすべてのインテントが受信され、メソッド呼び出しで渡されたパラメーターを使用してそれらにアクセスできます。

于 2010-07-06T07:07:37.640 に答える
14

dynamicBroadcastReceiver は、またはの 2 つの方法で登録できますstatic。static は、新しいBroadcastReceiver クラスを登録するintent-filterinを介してアクションを宣言することに他なりません。ダイナミックは、別のクラス内からレシーバーを登録しています。Anは、受け取るアクションを決定します。AndroidManifest.xmlintent-filter

BroadcastReceiver を作成するには、BroadcastReceiver クラスを拡張してonReceive(Context,Intent)メソッドをオーバーライドする必要があります。ここで、着信インテントを確認し、Intent.getAction()それに応じてコードを実行できます。

新しいクラスとして、 static は

public class Reciever1 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) { 
        String str = intent.getAction();
        if(str.equalsIgnoreCase("HELLO1")) {
            Log.d("Abrar", "reciever....");             
            new Thread() {
                public void run() {                     
                    Log.d("Abrar", "reciever....");
                    System.out.println("Abrar");                        
                }
            }.start();                          
        }

または、既存のクラス内に配置されている場合は、動的に呼び出されます

intentFilter = new IntentFilter();
intentFilter.addAction("HELLO1");

//---register the receiver---
registerReceiver(new Reciever1(), intentFilter);    
于 2012-01-05T10:21:31.953 に答える