以下の内容はhttps://android-java.hatenablog.jp/entry/2019/01/09/080000より取得しました。


ブロードキャストレシーバーの基本的な使い方(その1)

ブロードキャストレシーバーの使い方(その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)はこちら

android-java.hatenablog.jp

END




以上の内容はhttps://android-java.hatenablog.jp/entry/2019/01/09/080000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14