Intent有以下几个属性:
动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。
其中最常用的是Action属性和Data属性。
- 广播发送者
public class MainActivity extends Activity {
Button btn_hv;
Button btn_unhv;
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_hv:
Intent intent = new Intent();
intent.setAction("com.hq.bdrecvier.order"); //发给action正确的人
intent.putExtra("msg", "大家好,排好队,有序广播来了"); //发送广播的方法
//设置为有序的广播
sendOrderedBroadcast(intent, "george.permission.MY_BROADCAST_PERMISSION");
break;
case R.id.btn_unhv:
Intent intent1 = new Intent();
intent1.setAction("com.hq.bdrecvier.unorder"); //发给action正确的人
intent1.putExtra("msg", "大家好,无序广播都收到了吧"); //发送广播的方法
//设置为无序的广播
sendBroadcast(intent1);
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
private void initUI() {
// TODO Auto-generated method stub
btn_hv=(Button)findViewById(R.id.btn_hv);
btn_hv.setOnClickListener(listener);
btn_unhv=(Button)findViewById(R.id.btn_unhv);
btn_unhv.setOnClickListener(listener);
}
2.接受者的实现
1.在Activity中
package com.hq.unoderreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class OrderSecondReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("another apk -OrderSecondReceiver----got a intent : " +
intent.getStringExtra("msg"));
//如果不继续传播
abortBroadcast();
}
}
-------------------------------------------------------------------------------------
2.在AndroidManfest.xml中的登记
2.1有序
1. <!-- 声明权限 -->
<permission android:protectionLevel="normal"
android:name="george.permission.MY_BROADCAST_PERMISSION">
</permission>
2. <!-- 获取广播权限 -->
<uses-permission android:name="george.permission.MY_BROADCAST_PERMISSION"/>
//表示权限的高低,最高为999,可以多个为999,表示都为最高等级
3.<intent-filter android:priority="999">
如下:
<receiver android:name="com.hq.unoderreceiver.OrderFirstReceiver" >
<intent-filter android:priority="999">
<action android:name="com.hq.bdrecvier.order"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
<receiver android:name="com.hq.unoderreceiver.OrderSecondReceiver" >
<intent-filter android:priority="998">
<action android:name="com.hq.bdrecvier.order"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
2.2无序(不要加上面的3条)
<receiver android:name="com.hq.unoderreceiver.OrderSecondReceiver" >
<intent-filter android:priority="998">
<action android:name="com.hq.bdrecvier.order"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>