android中的广播有有序广播和普通广播两种网上有很多介绍的,这里只是简单介绍一下普通广播的实现
首先在主页面放置一个按钮然后再在按钮的监听之后在监听里实现广播因为只是实现一个简单的普通广播所以我注释了有序广播的实现,没有写有序广播的接收
public class MainActivity extends Activity {
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
OnClickListener litener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
Intent intent = new Intent();
intent.setAction("android.intent.action.CaseReceiver");//设置要接收的class
intent.putExtra("msg", "这是一条普通的receiver");
sendBroadcast(intent);
break;
// case R.id.button2:
// Intent intent1 = new Intent();
// intent1.setAction("android.intent.action.CaseReceiver");
// intent1.putExtra("msg", "这是一条有序的receiver");
// sendOrderedBroadcast(intent1, null);
// break;
default:
break;
}
}
};
btn1.setOnClickListener(litener);
btn2.setOnClickListener(litener);
}
}
普通广播的接收实现
public class CaseReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String str = intent.getStringExtra("msg");
Toast.makeText(context, "-->" + str, Toast.LENGTH_LONG).show();
Log.i("tag", "-------------->接收");
}
}
其中值得我们注意的是他们的注册在
<application>的标签里添加服务
<receiver android:name="cm.example.helloserverd.CaseReceiver" >
<intent-filter android:priority="200" >
<action android:name="android.intent.action.CaseReceiver" />
<category android:name="android.intent.category.DEFAULT" >
</category>
</intent-filter>
</receiver>
其中第一个receiver标签里的的android:name是广播接收者的class的类名而第二个action里的android:name是一个相当于映射的别名,在发送页面里的setaction所写的就是第二个action的名字,
值得注意的是第一个action是类的路径,而第二个action则是android.intent.action.xxxxxx