【Android】广播的写法

  • 发送广播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,这样会报错!!!

网上看到已经有哥么掉坑里去过了:

http://www.verydemo.com/demo_c131_i26767.html

相关文章
相关标签/搜索