android之广播,broadcast



android之广播,broadcast


1.什么是广播?

android四大基本组件之一。

一种全局的监听器,用于监听系统全局的广播消息

系统大部分消息都是以广播的形式发布,比如开机启动的消息,收到短信的消息,打进打出电话的消息。


2.如何实现自定义广播?


广播分为有序广播和无序广播

广播又分为静态和动态,静态是在xml文件中配置,动态是代码生成。


有序广播实现

代码如下

广播发送者类

package com.zking.administrator.g160628_android21_sender;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText et_main_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_main_content = (EditText) findViewById(R.id.et_main_content);
    }
    public void send(View view){
        String content=et_main_content.getText().toString();

        //发送广播
        //两种类型广播
        //有序广播  无序广播
        Intent intent=new Intent();
        //指定广播的名字
        intent.setAction("com.zking.administrator.g160628_android21_sender.Hug");
        //指定广播内容
        intent.putExtra("content",content);
        //发送无序广播
        //sendBroadcast(intent);

        //发送无序黏性广播
        //sendStickyBroadcast(intent);
        //发送有序广播
        sendOrderedBroadcast(intent,null);
    }
}
package com.zking.administrator.g160628_android21_receiver02;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

/**
 * Created by Administrator on 2017/7/11 0011.
 */

public class MyReceiver02 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
       //获取广播的名字
        String action=intent.getAction();
        if("com.zking.administrator.g160628_android21_sender.Hug".equals(action)){
            //获取广播内容
            String content=intent.getStringExtra("content");
            Log.i("test","广播接受者2号:"+content);

            //判断
            if(content.contains("免费")){
                //不传播
                abortBroadcast();
            }


            //改变广播的内容
            //设置结果
            Bundle bundle=new Bundle();
            bundle.putString("newContent",content+",开玩笑的,你阔以免费拥有小灰灰");
            setResultExtras(bundle);
        }
    }
}


接收者类

代码如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值