转自http://www.cnblogs.com/zhongyinghe/p/5314971.html
1、发送广播代码
package com.example.alame;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view){
Intent intent = new Intent();
intent.setAction("com.exemple.oooxxx");
//发送一条无序的广播;如果是无序的广播,则所有的广播接收者都能够接收到这个广播事件
//sendBroadcast(intent);
//如果广播是有序的发送出去,则广播接受者按优先级来接收广播事件;有序广播特点:高优先级的广播接收者可以终止掉广播事件
//sendOrderedBroadcast(intent, null);
//这种方式的FinalBroadcast广播接受者无论如何都会接收到广播
sendOrderedBroadcast(intent, null, new FinalBroadcast(), null, 0, null, null);
}
}
2、FinalBroadcast是无需在清单文件中进行配置的,并且无论如何都会接收到广播
package com.example.alame;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class FinalBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("我是最后接收者");
}
}
3、测试接收自定义广播事件代码
1)清单文件
<receiver android:name=".MyBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="com.exemple.oooxxx"/>
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiver2">
<intent-filter android:priority="500">
<action android:name="com.exemple.oooxxx"/>
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiver3">
<intent-filter android:priority="100">
<action android:name="com.exemple.oooxxx"/>
</intent-filter>
</receiver>
在清单文件中设置了优先级
2)广播接收者代码
package com.example.module3g;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("receriver 1");
Toast.makeText(context, "接收到频道", 0).show();
//该函数会终止掉广播,造成低优先级的广播接受者接收不到广播
//abortBroadcast();
}
}
package com.example.module3g;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadcastReceiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("receriver 2");
Toast.makeText(context, "接收到频道2", 0).show();
}
}
package com.example.module3g;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadcastReceiver3 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("receriver 3");
Toast.makeText(context, "接收到频道3", 0).show();
}
}