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>
时间: 2024-10-12 04:56:44

Broadcast Intent 和Broadcast Receiver的使用的相关文章

Android开发- Intent和Broadcast Receiver

Intent是一种消息传递机制,可以在应用程序内使用,也可以在应用程序间使用.可以用于: 使用类名显示启动一个特定的Service或者Activity. 启动Activity或者Service来执行一个动作的Intent,通常需要使用特定的数据,或者对特定的数据执行动作. 广播某个时间已经发生. 使用Intent来启动Activity 显式启动新的Activity Intent intent = new Intent(MyActivity.this, SelectHorseActivity.cl

安卓权威编程指南-笔记(第27章 broadcast intent)

本章需求:首先,让应用轮询新结果并在有所发现时及时通知用户,即使用户重启设备后还没有打开过应用.其次,保证用户在使用应用时不出现新结果通知. 1. 一般intent和broadcast intent 许多系统组件需要知道某些事件的发生(WIFI信号时有时无,电话的呼入等),为满足这样的需求,Andorid提供了broadcast intent 组件. broadcast intent的工作原理类似于之前学过的intent,但不同的是broadcast intent可以被多个叫做broadcast

Broadcast Intent &amp; Broadcast Receiver

当Android系统发生某种状况,必须通知所有程序进行处理时,例如电量不足等,可利用Broadcast Intent对象的功能来进行信息广播. 运行机制包括两部:送出Intent对象的程序:监听广播信息的程序(Broadcast Receiver),其本省是一个类,必须继承BroadcastReceiver类,必须向系统注册,并指定要监听的广播信息.当该监听的广播消息被送出时,系统会启动所有监听该广播消息的Broadcast Receiver程序,并运行onReceive()方法. Broadc

我的Android 4 学习系列之Intent 和 Broadcast Reciever

目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending Intent Intent Filter 和 Broadcast Reciever 简介 使用 Intent Filter 扩展应用程序的功能 监听 Broadcast Intent 监听设备状态改变 在运行时管理manifest Reciever Intent简介 Intent是一种消息传递机制

android 之 Intent、broadcast

Intent的功能有: 在mainActivity中为按钮1添加监听事件: listener1 = new OnClickListener() { @Override    public void onClick(View v) {        // TODO Auto-generated method stub       Intent intent1 = new Intent(mainActivity.this, Activity1.class);        intent1.putEx

Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介

通过第一篇的讲解,我们已经看到了如何使用Intent来启动新的应用程序组件,但是实际上他们也可以使用sendBroadcast方法来在组件间匿名的广播消息. 作为一个系统级别的消息传递机制,Intent可以在进程之间发送结构化的消息.因此,通过实现Broadcast Receiver来监听和响应应用程序内的这些Broadcast Intent. 通过使用Intent来广播一个事件,可以在不修改原始的应用程序的情况下,让我们开发人员对事件做出反应.Android大量使用了Broadcast Rec

Android中Intent具体解释(二)之使用Intent广播事件及Broadcast Receiver简单介绍

通过第一篇的解说,我们已经看到了怎样使用Intent来启动新的应用程序组件,可是实际上他们也能够使用sendBroadcast方法来在组件间匿名的广播消息. 作为一个系统级别的消息传递机制,Intent能够在进程之间发送结构化的消息. 因此,通过实现Broadcast Receiver来监听和响应应用程序内的这些Broadcast Intent. 通过使用Intent来广播一个事件,能够在不改动原始的应用程序的情况下.让我们开发者对事件做出反应.Android大量使用了Broadcast Rec

android apk的签名和权限问题

一. android apk的签名问题(http://blog.csdn.net/lyq8479/article/details/6401093) 1.为什么要给Android应用程序签名?      如果只能用一句简单的话语来回答这个问题的话,我会说:“这是Android系统所要求的”.      Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来

TelephonyManager类使用方法大全

这个类是很有用地,可以得到很多关于手机的信息,做应用时必须的工具. 不废话,直接上注释后的代码,请享用: <code> /** * *@author dingran *创建日期 2010-4-29 下午05:02:47 * */ package net.sunniwell.app; import android.app.Activity; import android.os.Bundle; import android.telephony.CellLocation; import androi