ブロードキャストをカスタマイズし、情報を受け入れる


前編のブログでリンクを開くと、Androidでの無秩序放送の実現を簡単に紹介しましたが、本編では、秩序ある放送の実現に重点を置きます.
秩序放送とは,権限値に基づいて定義され,権限値が大きいほど最初にブロードキャストが取得され,権限値が小さい場合はブロードキャストが取得される順序でブロードキャストが適用される.
秩序化されたブロードキャストはブロックできますが、ブロックが発生した場合、その後ブロードキャストを転送することはできません.
秩序あるブロードキャストを送信するにはsendBroadcast(intent);
秩序あるブロードキャストを送信するにはsendOrderedBroadcast(intent,null);
ここでは、android:priority=「450」を使用して、秩序化されたブロードキャストを受信する優先度を設定し、数値が大きいほど優先度が高くなると、ブロードキャストを最初に受信するフィルタリングも必要です.
では、これだけ言って、具体的なコード実装を見てみましょう.
一、まず、本アプリケーションにおいて放送を受ける情報である.
まず、MainActivityでブロードキャスト送信者を定義します.同様に、ブロードキャストを送信するIntentのActionを設定する必要があります.
package com.example.text04;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//                   
		// IntentFilter filter = new IntentFilter();
		// filter.addAction("MyInfo02");
		// filter.setPriority(400);
		// registerReceiver(new MyReceiver02(), filter);
	}

	public void send(View view) {
		//   Intent  
		Intent intent = new Intent();
		intent.putExtra("info", "      ?");
		intent.putExtra("num", 100);
		intent.setAction("MyInfo02");
		//     
		sendOrderedBroadcast(intent, null);
	}

}
は、次に、本アプリケーションでBroadCastReceiverを作成する2つのサブクラスによってブロードキャストの受信を実現する:同様に、このIntentのActionがブロードキャストを送信するときに設定されたActionと一致するかどうかを判断する.
最初のサブクラス:
package com.example.text04;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals("MyInfo02")) {
			String info = intent.getStringExtra("info");
			int num = intent.getIntExtra("num", 88);
			//Log  
			Log.i("main", "01     :" + info + "    :" + num);
		}
	}

}

2番目のサブクラス:
package com.example.text04;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver02 extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals("MyInfo02")) {
			String info = intent.getStringExtra("info");
			int num = intent.getIntExtra("num", 88);
			// Log  
			Log.i("main", "02     :" + info + "    :" + num);
		}
	}

}
その後、リストファイルにReceiverのフィルタを追加します.ここではandroid:proiorityを使用して2つの受信機の権限値を設定し、大きいほど先に情報を受信します.
        
            
                
            
        
        
            
                
            
        
二、以上が本アプリケーションでカスタマイズされた秩序化放送を受信するものであり、次に他のアプリケーションでどのように放送を受信するかの情報を見てみましょう.
同様に新しいAndroidプロジェクトを作成し、BroadCastReceiverのサブクラスを新規作成して情報の受け入れを行います.同様にActionを判断します.
次に、
package com.example.text05;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals("MyInfo02")) {
			String info = intent.getStringExtra("info");
			int num = intent.getIntExtra("num", 88);
			// Log  
			Log.i("main", "other     :" + info + "    :" + num);
		}
	}

}
は、インベントリファイルにフィルタを設定し、受信機の優先度を構成する.ここでは、同様に優先度の設定を行う

        
            
                
            
        
で、優先度を定義すると、ブロードキャストを受信するには一定の順序があります.これが秩序あるブロードキャストのすべての内容です.私たちが唯一注意しなければならないのは、無秩序放送との2つの違いです.
すなわち、ブロードキャストを送信する方法が異なり、シーケンスブロードキャストは、受信機がブロードキャストを受信する順序を決定するために優先度を定義する必要がある.