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() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent 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 {
@Override
public 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"
/>
<Button
android:id="@+id/btn_demo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="测试广播事件" />
</LinearLayout>