发送广播html
/** * 小喇叭发出数据已经跟新的广播 */ private void broadcastCircleViewUpdate() { //建立 Intent Intent testIntent = new Intent(); //设置 动做属性 testIntent.setAction(Action.ACTION_CIRCLE_MSG_UPDATE); //设置消息内容 testIntent.putExtra("MSG", "Test!!!!"); //发送广播 getBaseContext().sendBroadcast(testIntent); }
接受广播java
【1】先写一个广播监听对象: receiver
android
private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //讲广播中收到的intent的属性取出来 String action = intent.getAction(); //使用if-else if 进行哦匹配;注意不要使用switch if (action.equals(BroadCastAction.NEW_POST_ACTION)) { //添加须要执行的动做 ... ... } else if (action.equals(BroadCastAction.NEW_POST_SUCCESS_ACTION)) { //添加须要执行的动做 ... ... } else if (action.equals(BroadCastAction.NEW_POST_FAIL_ACTION)) { //添加须要执行的动做 ... ... } else if (action.equals(Action.ACTION_CIRCLE_MSG_UPDATE)) { //添加须要执行的动做 String msg = intent.getStringExtra("MSG"); ... ... } else if (action.equals(Action.ACTION_CIRCLE_HOME_UPDATE)) { //添加须要执行的动做 ... ... } else if (action.equals(Action.ACTION_CIRCLE_PERSONAL_UPDATE)) { //添加须要执行的动做 ... ... } } };
【2】集中注册全部的监听
ide
/** * 集中注册监听 */ private void registRecivers() { IntentFilter filter = new IntentFilter(); filter.addAction(BroadCastAction.NEW_POST_ACTION); filter.addAction(BroadCastAction.NEW_POST_SUCCESS_ACTION); filter.addAction(BroadCastAction.NEW_POST_FAIL_ACTION); filter.addAction(Action.ACTION_CIRCLE_MSG_UPDATE); filter.addAction(Action.ACTION_CIRCLE_HOME_UPDATE); filter.addAction(Action.ACTION_CIRCLE_PERSONAL_UPDATE); //注册走起:参数1为receiver,参数2为intent过滤器 registerReceiver(receiver, filter); }
【3】广播的注册与卸载code
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_firend_circle); ... ... // 在Activity中onCreate()中集中注册 registRecivers(); } @Override protected void onDestroy() { super.onDestroy(); // 注意必定要卸载,否则运行会报错 unregisterReceiver(receiver); }
好东西老是在最后!!!xml
BroadcastReciver须要能匹配的intent,共有2种方式htm
【1】使用代码进行制定,以下对象
private void registRecivers() { IntentFilter filter = new IntentFilter(); filter.addAction(BroadCastAction.NEW_POST_ACTION); filter.addAction(BroadCastAction.NEW_POST_SUCCESS_ACTION); filter.addAction(BroadCastAction.NEW_POST_FAIL_ACTION); filter.addAction(Action.ACTION_CIRCLE_MSG_UPDATE); filter.addAction(Action.ACTION_CIRCLE_HOME_UPDATE); filter.addAction(Action.ACTION_CIRCLE_PERSONAL_UPDATE); //注册走起:参数1为receiver,参数2为intent过滤器 registerReceiver(receiver, filter); }
【2】在AndroidManifest.xml文件中进行配置ip
<receiver android:name="com.zte.moa.receiver.SipBroadcastReceiver" > <intent-filter> <action android:name="com.zte.moa.call_action.org.doubango.ngn.services.impl.NgnHttpClientService" /> </intent-filter> </receiver>
这里有个坑!!!用sipBroadcastReceiver.java来举个例子ci
使用方式【2】的话是有条件的:sipBroadcastReceiver.java 必须存在这个类
必定必定!!!!不能在Activity中写成内部类sipBroadcastReceiver,这样会报错!!!
网上看到已经有哥么掉坑里去过了: