LoginSignup
2
0

More than 3 years have passed since last update.

[ Android ] ブロードキャストでIntentを送受信する

Posted at

今回はAndroidでブロードキャストの送受信する方法について記す。

目的

私が目的とするプログラムはAsyncTaskを継承したクラスからブロードキャストを送信し、メインアクテビティでそれを受信するプログラムである。

必要なクラス

ブロードキャストはアクティビティやサービスクラスから送信できる。
一方受信するにはBroadcastReceiverを継承したクラスが必要である。

実装

登録

まずBroadcastReceiverを継承したクラス(MyReciever)をマニフェストに登録しなければならないので、以下を追記する。このクラスは一クラスとして定義してもよいが、インナークラスとして定義することが多いらしい。本記事では、受信クラス(メインアクティビティ)内で定義している。またアクション名も定義しなければならない。本記事では”testとしている。”

<application>
<receiver android:name=".MainActivity$MyReceiver">
    <intent-filter>
        <action android:name="test" />
    </intent-filter>
</receiver>
</application>

送信側

送信にはIntentを使う。アクション名を使ってIntentを生成し、そこに送信したい内容を詰め、送信メソッドで送る。

Intent intent = new Intent("test");
intent.putExtra("ブロードキャストテスト", "OK");
applicationCommon.sendBroadcast(intent);

受信側

「登録」で述べたように、MyRecieverをMainActivityのインナークラスとして定義する。
このインナークラスは、引数なしのコンストラクタを持てないので、static修飾する必要がある。気を付けて頂きたい。
ブロードキャストが送信されると、マニフェストに登録されたレシーバクラスのonReceive()が動く。
そのメソッド内に行いたい処理を書けばよい。

MainActivity {
    onCreate(){

    }

    public static MyReciever extends BroadcastReceiver {
        @Override
            public void onReceive(Context context, Intent intent) {
                    //Intentから値を取得する
        }
    }
}

参考URL

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0