broadcastについて
任意のブロードキャストメソッド ( Context.sendBroadcast()、 Context.sendOrderedBroadcast()、Context.sendStickyBroadcast() などといった ) に渡されるインテントオブジェクトは、関与しているすべてのブロードキャストレシーバに配信されます。さまざまな種類のブロードキャストがシステムコード内で発生します。
4. インテントとインテントフィルタ - ソフトウェア技術ドキュメントを勝手に翻訳
broadcastされたIntentの受信
ACTION_VIEWなインテントを受信するreceiverをマニフェストに記述。すべてに配信されるか確認するため、複数定義する。
<receiver android:name="ExBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.VIEW"></action> </intent-filter> </receiver> <receiver android:name="ExBroadcastReceiver2"> <intent-filter> <action android:name="android.intent.action.VIEW"></action> </intent-filter> </receiver>
BroadcastReceiverを継承する。受信するとトーストメッセージを表示するように実装。
public class ExBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show(); } }
public class ExBroadcastReceiver2 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "onReceive2", Toast.LENGTH_SHORT).show(); } }
broadcastの送信
Activity#sendBroadcast(Intent)で、broadcastを送信してみる。
public class SampleBroadcastActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); sendBroadcast(intent); } }); //略
実行してbutonをクリックすると、ExBroadcastReceiverとExBroadcastReceiver2のonReceiveが実行されることを確認。