liguofeng29’s blog

個人勉強用ブログだっす。

AndroidのBroadcastReceiver - Normal Broadcast

Normal Broadcastは非同期であり、同時にすべての受信者が受信する。

サンプルコード

① MainActivity.javaのボタンでBroadcastを行う

package com.example.liguofeng.mynormalbroadcastreceiver;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        // ボタンクリック
        ((Button) findViewById(R.id.broadcast)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("com.example.liguofeng.action.SAMPLE_BROADCAST");
                intent.putExtra("msg", "123456789");

                // Broadcast
                sendBroadcast(intent);
            }
        });
    }
}

② MyReceiver.javaで受信し、結果を表示する

package com.example.liguofeng.mynormalbroadcastreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,
                "IntentAction : " + intent.getAction() + "\n" +
                "Message : " + intent.getStringExtra("msg"),
                Toast.LENGTH_LONG)
                .show();
    }
}

③ AndroiManifest.xmlに追加

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true" >
    <intent-filter>
        <action android:name="com.example.liguofeng.action.SAMPLE_BROADCAST" />
    </intent-filter>
</receiver>

f:id:liguofeng29:20151218002717g:plain