Android自定义广播的动态,静态注册以及跨平台接收广播

时间:2024-04-03 09:16:01

Android自定义广播的动态,静态注册以及跨平台接收广播

一、静态注册

静态注册就是在AndroidManifest.xml配置文件中注册

第一步,新建BroadcastReceiver

如图Android自定义广播的动态,静态注册以及跨平台接收广播
接下来我们写个简单的打印语句以检测是否成功
Android自定义广播的动态,静态注册以及跨平台接收广播
(我们暂时先不传数据,只是简单的测试)

修改AndroidMainfest.xml配置文件中的代码

Android自定义广播的动态,静态注册以及跨平台接收广播
主要改动在这里(如果你是按上面的方法生成的MyReceiver的话他是会自动生成的)这里要注意这个自定义的action要与下面讲的MainActivity中定义的action相同



//自定义的action


最后在MainActivity.java文件中添加按钮点击事件

先要在MainActivity的xml文件中添加一个按钮

然后再在MainActivity.java文件中添加按钮点击事件
Android自定义广播的动态,静态注册以及跨平台接收广播
intent.setAction(“CCTV_1”);//这里就是我们自定义的action名
intent.setPackage(“com.xwl.guangbo”);//安卓8.0后静态注册的广播无法接收需要添加Intent.setComponent();
在安卓9.0后对静态注册则需发送端中需要指定app所在的包名我这是添加的包名
这就是静态注册了

二、动态注册

第一步我们还是新建BroadcastReceiver这里的步骤参考上面

接下来我们我们直接在MainActivity实现

首先我们还是得添加按钮点击事件,步骤同上
Button b1=findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(“CCTV_1”);
intent.putExtra(“dtgb”,“动态广播”);
intent.setPackage(“com.xwl.guangbo4”);
sendBroadcast(intent);
}
});
}
这里我们点击事件中的代码有所不同主要是加了句
intent.putExtra(“dtgb”,“动态广播”);
这句是往intent中加入数据,没错这次我们要传输数据
回到正题我们还需要注册广播
MyReceiver mr=new MyReceiver();//实例化广播类(上 面步骤中创建的类)对象
IntentFilter intf=new IntentFilter(“CCTV_1”);//实例化 IntentFilter对象,这个 IntentFilter相当于一个过滤器筛选registerReceiver(mr,intf);//注册广播接收

/*动态注册需在Acticity生命周期onDestroy通过
*unregisterReceiver()方法移除广播接收器,
* 优化内存空间,避免内存溢出
*/
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mr);
}
这里MyReceiver的对象mr因为是在onCreate中的局部变量所以还许改代码把对象的声明放在全局改完后MainActivity是这样的
Android自定义广播的动态,静态注册以及跨平台接收广播
最后我们再修改MyReceiver中的代码来取得数据
Toast.makeText(context,intent.getStringExtra(“dtgb”),Toast.LENGTH_SHORT).show();
Android自定义广播的动态,静态注册以及跨平台接收广播
以上就是动态注册了

三、 跨平台接收广播

这里我们要建两个工程也就是两个app一个作为发送方
一个作为接收方

发送方

我们直接在MainActivity中写一个按钮点击事件
监听代码如下
Intent intent=new Intent(“CCTV_1”);
intent.putExtra(“xigua”,“16.5”);
sendBroadcast(intent);
我们还是传输数据最后来测试结果
Android自定义广播的动态,静态注册以及跨平台接收广播

接收方

还是新建BroadcastReceiver
再MainActivity中动态注册
注意action与发送方一致
Android自定义广播的动态,静态注册以及跨平台接收广播
然后再修改MyReceiver中代码写一个打印语句测试
Android自定义广播的动态,静态注册以及跨平台接收广播
这样就完成了