Broadcast 实例
package demo.broadcast;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;/** * 实现一个广播和广播接收器比较简单 * 一、构建Intent对象 * 二、调用sendBroadcast()发出一个系统级别的广播 * 三、事件的接收是通过自定义一个类,通过继承BroadcastReceiver,并实现其onReceive()方法来实现的 * 四、注册你定义的广播接收器,在AndroidManifest.xml中注册或者在代码中注册 * @author Administrator * */public class MainActivity extends Activity { //首先需要一个Action常量,任意了啦,就是相当于一个唯一的标识符//这里关于Action的理解,可以这样://Action就相当于一种符号。比如几个军队在作战,其中A军队发出一种信号,//其中B军队和A军队是一方(就是B军队可以正确识别这种信号),所以B军队看到//信号后,对信号进行解析,根据信号的指示,执行任务。而另一方的C军队,不知道这种信号//所以,只能置之不理。//这里,信号就相当于Action,起到过滤的作用。军队B就相当于该Action的一个接受者,是一个广播接收者private static final String ACTION_DEMO_BROADCAST = "demo.broadcast.action.ACTION_DEMO_BROADCAST";private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)this.findViewById(R.id.btn_demo); button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent intent = new Intent();//关于Action的理解可以看上面intent.setAction(ACTION_DEMO_BROADCAST);intent.putExtra("msg", "我发送了广播,注意查收!");MainActivity.this.sendBroadcast(intent);}}); }}?
package demo.broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** * 自定义一个广播接收器 * 在onReceive()方法中处理 * @author Administrator * */public class DemoReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//从Intent中接收信息String msg = intent.getStringExtra("msg");Toast.makeText(context, "新消息:"+msg, Toast.LENGTH_LONG).show();}}?
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="demo.broadcast" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" 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="DemoReceiver"><intent-filter><action android:name="demo.broadcast.action.ACTION_DEMO_BROADCAST" /><category android:name = "android.intent.category.LAUNCHER" /></intent-filter></receiver> </application> <uses-sdk android:minSdkVersion="8" /></manifest>?
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Buttonandroid:id="@+id/btn_demo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试广播事件" /></LinearLayout>?