Android学习笔记之无序广播
安卓中一共有两中广播类型:有序广播和无序广播今天我在此复习一下无序广播
无序广播特点
- 1、无序广播不可以被拦截;
- 2、所有接收无序广播的接收者均能接收到此广播,并且是同时接收到;
- 3、可以指定接收权限和发送权限;
- 4、无序广播不可以传递数据;
广播的接收和发送
如何发送一条广播
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(action);
sendBroadcast(intent);//不带权限发广播
}
如何接收到一条广播
1、创建BroadCastReceiver的子类
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("MyReciever","我接收到了广播" + action);
}
}
2、在清单文件中注册广播
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.fcd.action"/>
</intent-filter>
</receiver>
指定无序广播接收权限
1、在发送者的清单文件中声明权限
<permission android:name="com.fcd.application.permission.MYPERMISSION"/>
2、发送广播时要带上权限
private String action = "com.fcd.action";
private String permission = "com.fcd.application.permission.MYPERMISSION";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button send = findViewById(R.id.btn_send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(action);
// sendBroadcast(intent);不带权限发广播
sendBroadcast(intent,permission);//带权限发广播
}
});
这样没有接收权限的应用就无法接收到广播了

如果需要给给接收者应用开放权限就可以了
<uses-permission android:name="com.fcd.application.permission.MYPERMISSION"/>
指定无序广播发送权限
和指定接收权限是相反的过程:
1、先给广播的接收者设置自定义权限
<permission android:name="com.fcd.application.permission.RECEIVER"/>
....
<!--注意要在声明reciever时,同时声明权限-->
<receiver android:name=".MyReceiver"
android:permission="com.fcd.application.permission.RECEIVER">
<intent-filter>
<action android:name="com.fcd.action"/>
</intent-filter>
</receiver>
2、然后给发送者开放权限即可
<uses-permission android:name="com.fcd.application.permission.RECEIVER"/>
总结
1、当发送者 不希望所有人接收到此广播,可以通过添加发送者权限来控制
步骤:
1、在清单文件中用<permission></permission>标签声明自定义权限
2、在发送广播时、调用sendBroadcast两个参数的方法、将权限设置为第二个参数
3、为需要接收广播的应用添加对应的权限
2、 当接收者,不希望接收所有同名的广播时 可以通过添加接收权限来控制
步骤
1、在清单文件中声明权限<permission></permission>标签 声明自定义权限
2、在<receiver></receiver>标签上、添加对应权限
3、为需要发送广播权限的应用、添加对应的权限
最后附上项目源码
https://gitee.com/peterLiz/android_learning.git

需要技术开发服务加QQ:599490685,程序员很忙非诚勿扰!!!!
浙公网安备 33010602011771号