ブロードキャストレシーバーの使い方(その1)
ブロードキャストレシーバーは、端末がアプリ向けに発信している様々なメッセージや情報を受信するクラスです。
これを利用すると、時間やタイムゾーンの変化、バッテリーの残量や充電状態など、端末の細かな状態を知ることができます。また、自分で端末内に情報を発信してそれを受信することも可能です。
ということで今回は、自分で情報(インテント)を発信(ブロードキャスト)して、それをブロードキャストレシーバーで受信する方法の説明したいと思います。
サンプルコード①(MainActivity.java)
詳しい説明はコード内のコメントで記述してあります。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトファイルをViewにセット
setContentView(R.layout.activity_main);
//レイアウトファイルのボタンに直にクリックイベントリスナーを設定
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//ブロードキャストレシーバーに自作インテントを送信する
Intent intent1 = new Intent(); //空のインテントを生成
intent1.setAction("MY_INTENT"); //インテントのアクション名を設定
sendBroadcast(intent1); //インテントを送信
}
});
}
}
サンプルコード②(mBroadcastReceiver.java)
詳しい説明はコード内のコメントで記述してあります。
public class mBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//送信されたブロードキャストを受信してトーストで表示
Toast.makeText(context, "受信しました…", Toast.LENGTH_SHORT).show();
}
}
サンプルコード③(AndroidManifest.xml)
マニフェストファイルにブロードキャストレシーバーを登録します。以下の <receiver> タグを追記してください。追記する場所は <activity> タグと同じ並びです。
<!-- ブロードキャストレシーバーと受け取るアクション名「MY_INTENT」を登録 -->
<receiver android:name=".mBroadcastReceiver">
<intent-filter>
<action android:name="MY_INTENT"></action>
</intent-filter>
</receiver>
サンプルコード④(activity_main.xml)
画面構成は中央に以下のボタンを配置しただけの簡単なものです。
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
実行結果
① 起動すると、画面の中央にボタンが表示されるので、それをクリックして自作のインテントを発信(ブロードキャスト)します。

② 自分で発信したインテントを、ブロードキャストレシーバーが受信しトーストで「受信しました…」というメッセージを表示します。

備考・その他
ブロードキャストレシーバーの使い方は特に難しいものではありませんが、ついうっかりマニフェストファイルに登録するのを忘れて「あれ、なぜか動かないぞ・・・」となることがよくあります。
マニフェストファイルへの登録忘れは簡単に気付きにくく、大きな時間のロスになるのでぜひ注意してください。
次回は、自作のインテントではなく、端末の状態などの情報をブロードキャストレシーバーで受信する方法を説明する予定です。
※ブロードキャストレシーバーの基本的な使い方(その2)はこちら
END