LoginSignup
10
9

More than 3 years have passed since last update.

Android ブロードキャスト処理のサンプル

Last updated at Posted at 2017-11-06

ボタンクリック時にブロードキャストを送信し、
それを自分のアクティビティの中で受信して、
テキストビューの中身を書き換える処理です。
ブロードキャストのサンプルとして記載します。

MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    MyBroadcastReceiver myReceiver;
    IntentFilter intentFilter;
    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // レシーバーオブジェクトの生成
        myReceiver = new MyBroadcastReceiver();
        // レシーバーが受信できるインテントを指定してインテントフィルターを生成
        intentFilter = new IntentFilter("ORIGINAL_ACTION");

        // onClickListenerの登録
        findViewById(R.id.button1).setOnClickListener(button1ClickListener);
    }

    @Override
    public void onResume() {
        super.onResume();
        // ブロードキャストレシーバーを登録する。(どんなインテントがきたらどのレシーバーをキックするかを定義づける)
        registerReceiver(myReceiver, intentFilter);
    }

    @Override
    public void onPause() {
        super.onPause();
        // ブロードキャストレシーバーを解除する
        unregisterReceiver(myReceiver);
    }

    // ボタン押下時の処理を記載
    View.OnClickListener button1ClickListener = new View.OnClickListener() {
        // ボタン押下時にはこのメソッドが動く
        public void onClick(View view) {
            // ブロードキャスト送信するインテントの種類を定義する
            Intent i = new Intent("ORIGINAL_ACTION");
            // ブロードキャストにメッセージを付与する
            i.putExtra("key", "message");
            // ブロードキャスト送信
            sendBroadcast(i);
        }
    };

    public class MyBroadcastReceiver extends BroadcastReceiver {
        // ブロードキャスト受信時にこのメソッドが動く
        @Override
        public void onReceive(Context context, Intent i) {
            // ブロードキャスト受信時の処理(今回は適当)
            tv = (TextView) findViewById(R.id.text_view);
            tv.setText("abc");
        }
    }
}

10
9
1

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
10
9