Broadcast IntentとBroadcast Receiverの使用

18093 ワード

package tw.android;



import android.app.Activity;

import android.content.*;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;



public class Main extends Activity {



    private Button mBtnRegReceiver,

                   mBtnUnregReceiver,

                   mBtnSendBroadcase1,

                   mBtnSendBroadcase2;



    private MyBroadcaseReceiver2 mMyReceiver2;



    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);



        setupViewComponent();

    }



    private void setupViewComponent() {

        mBtnRegReceiver = (Button)findViewById(R.id.btnRegReceiver);

        mBtnUnregReceiver = (Button)findViewById(R.id.btnUnregReceiver);

        mBtnSendBroadcase1 = (Button)findViewById(R.id.btnSendBroadcase1);

        mBtnSendBroadcase2 = (Button)findViewById(R.id.btnSendBroadcase2);

                   

        mBtnRegReceiver.setOnClickListener(btnRegReceiverOnClickLis);

        mBtnUnregReceiver.setOnClickListener(btnUnregReceiverOnClickLis);

        mBtnSendBroadcase1.setOnClickListener(btnSendBroadcase1OnClickLis);

        mBtnSendBroadcase2.setOnClickListener(btnSendBroadcase2OnClickLis);

    }



    private Button.OnClickListener btnRegReceiverOnClickLis = new Button.OnClickListener() {

        public void onClick(View v) {

            IntentFilter itFilter = new IntentFilter("tw.android.MY_BROADCAST2");

            mMyReceiver2 = new MyBroadcaseReceiver2();

            registerReceiver(mMyReceiver2, itFilter);

        }

    };



    private Button.OnClickListener btnUnregReceiverOnClickLis = new Button.OnClickListener() {

        public void onClick(View v) {

            unregisterReceiver(mMyReceiver2);    

         }

    };



    private Button.OnClickListener btnSendBroadcase1OnClickLis = new Button.OnClickListener() {

        public void onClick(View v) {

            Intent it = new Intent("tw.android.MY_BROADCAST1");

            it.putExtra("sender_name", " ");

            sendBroadcast(it);

        }

    };



    private Button.OnClickListener btnSendBroadcase2OnClickLis = new Button.OnClickListener() {

        public void onClick(View v) {

            Intent it = new Intent("tw.android.MY_BROADCAST2");

            it.putExtra("sender_name", " ");

            sendBroadcast(it);

        }

    };

}
package tw.android;



import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;



public class MyBroadcaseReceiver1 extends BroadcastReceiver {



    @Override

    public void onReceive(Context context, Intent intent) {

        // TODO Auto-generated method stub

        String sender = intent.getStringExtra("sender_name");

        Toast.makeText(context, "BroadcastReceiver1Μ " + sender + " Broadcase ", 

                Toast.LENGTH_LONG).show();

    }



}
package tw.android;



import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;



public class MyBroadcaseReceiver2 extends BroadcastReceiver {



    @Override

    public void onReceive(Context context, Intent intent) {

        // TODO Auto-generated method stub

        String sender = intent.getStringExtra("sender_name");

        Toast.makeText(context, "BroadcastReceiver2Μ " + sender + " Broadcase ", 

                Toast.LENGTH_LONG).show();



    }



}
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<LinearLayout

    android:orientation="vertical"

    android:layout_width="0dp"

    android:layout_height="fill_parent"

    android:layout_weight="1"

    />

<LinearLayout

    android:orientation="vertical"

    android:layout_width="0dp"

    android:layout_height="fill_parent"

    android:layout_weight="1"

    >

<Button android:id="@+id/btnRegReceiver"

       android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text=" Broadcase Receiver2"

    android:layout_marginTop="20dp"

    />

<Button android:id="@+id/btnUnregReceiver"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text=" Broadcase Receiver2"

    />

<Button android:id="@+id/btnSendBroadcase1"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text=" MY_BROADCAST1"

    />

<Button android:id="@+id/btnSendBroadcase2"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text=" MY_BROADCAST2"

    />

</LinearLayout>

<LinearLayout

    android:orientation="vertical"

    android:layout_width="0dp"

    android:layout_height="fill_parent"

    android:layout_weight="1"

    />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="tw.android"

      android:versionCode="1"

      android:versionName="1.0">

    <uses-sdk android:targetSdkVersion="11" />



    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".Main"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <receiver android:name=".MyBroadcaseReceiver1"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="tw.android.MY_BROADCAST1" />

            </intent-filter>

        </receiver>



    </application>

</manifest>