Broadcast Intent 和Broadcast Receiver的使用

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>

 

posted @ 2014-12-19 19:25  菜鸟的学习  阅读(373)  评论(0编辑  收藏  举报