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);
}
}
}
接收者类
代码如下