Android BroadcastReceiver的基本使用

来源:互联网 发布:未知网络错误 编辑:程序博客网 时间:2024/05/17 03:02

首先我们在发送者的Activity里创建两个控件
EditText 输入框 (发送内容)
Button 按钮(发送)
分别给每个控件设置一个ID
给Button设置一个onClick跳转事件

1,在java代码里面
2,先绑定一下输入框的ID
3,在new一个Intent
4,设置广播的名字,每个项目的包名是唯一的,所以为了确保唯一性要在前面加上包名
5,实现刚刚Button的onClick跳转事件,携带数据,和发送广播
例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_20);
ed_main_context = (EditText) findViewById(R.id.ed_main_context);
intent = new Intent();
//设置广播的名字(设置Action)
intent.setAction(“com.example.myapplication.955”);
}
public void send(View view){
String content=ed_main_context.getText().toString();

    //携带数据    intent.putExtra("data",content);    //发送广播(无序广播) //   sendBroadcast(intent);//发送黏性广播(动态广播)    sendStickyBroadcast(intent); }

}
(黏性广播主要用于动态广播在关闭后,广播发送者发送了消息,再次启动动态广播的时候能看见发送的离线消息)
发送黏性广播要在清单文件里面设置权限
例如:

再新建一个项目作为广播的接收者
1,新建一个MyReceived01的java类,需要继承
BroadcastReceiver(只有一个生命周期)
2,实现
BroadcastReceiver的生命周期
onReceive
3,与电台的名字进行判断
4,在清单文件里面进行配置
例如:

public class MyReceived01 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (“com.example.myapplication.955”.equals(intent.getAction())){}
String data= intent.getStringExtra(“data”);
Log.i(“text”,”1号接受完毕,广播为:”+data);
}
}
(配置广告接收者有两种,
1. 在清单文件中配置(静态广播)
2. 使用java 代码(动态广播)(在无序的前提下相对静态广播,动态广播具有优先权)
)





动态广播:
1:在MainActivity
onResume
生命周期里面注册广播
2,在
onDestroy
生命周期里面销毁广播

例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myReceived02 = new MyReceived02();
intentFilter = new IntentFilter();
intentFilter.addAction(“com.example.myapplication.955”);
}

@Overrideprotected void onResume() {    super.onResume();    //注册广播    registerReceiver(myReceived02,intentFilter);}@Overrideprotected void onDestroy() {    super.onDestroy();    //注销动态广播    unregisterReceiver(myReceived02);}

}
系统广播:
电话监听的三种状态:
CALL_STATE_RINGING(来电)
CALL_STATE_OFFHOOK(通话)
CALL_STATE_IDLE(挂断)


广播

0 0