广播BroadcastReceiver
2016-11-04 18:48
162 查看
接收系统的广播步骤
(1) 新建一个类继承BroadcastReceiver
以监听sd卡状态的广播接收者为例
形象一点的比喻, 这一步相当于买了个收音机
(2) 在清单文件中注册
这一步相当于装电池
(3) 在清单文件中添加意图过滤器,action里写监听的内容
发送自定义的无序广播
(1) 发送广播
(2) 接收广播
新建一个类,继承BroadcastReceiver
记得在清单文件中进行注册
发送自定义的有序广播
(1) 发送广播
权限从-1000 至 1000
1) 权限高的广播接收者可以修改广播,甚至可以终止广播
权限高的广播接收者1:
在这里, 这个接收者修改广播为: “中央下达福利,每人5斤大米”
权限低的广播接收者
权限低的接收者 接收到的广播就是修改后的了
2) 终止广播
权限高的广播接收者:
(3) resultReceiver
可以在广播发送者的应用中建一个resultReceiver, 用于接收最终到达的广播,
无论广播是否终止,都会被resultReceiver接收
(1) 新建一个类继承BroadcastReceiver
以监听sd卡状态的广播接收者为例
public class SdCardBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if("android.intent.action.MEDIA_MOUNTED".equals(action)){ System.out.println("sd卡已挂载"); }else if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){ System.out.println("sd卡已卸载"); } } }
形象一点的比喻, 这一步相当于买了个收音机
(2) 在清单文件中注册
<!-- 相当于装电池 --> <receiver android:name="com.example.sdbroadcast.SdCardBroadcastReceiver"> <!-- 相当于调频道 --> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <data android:scheme="file"/> </intent-filter> </receiver>
这一步相当于装电池
(3) 在清单文件中添加意图过滤器,action里写监听的内容
<!-- 相当于调频道 --> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <data android:scheme="file"/> </intent-filter>
发送自定义的无序广播
(1) 发送广播
public void startBroadcast(View view){ //开启广播 //创建一个意图对象 Intent intent = new Intent(); //指定发送广播的频道 intent.setAction("com.example.BROADCAST"); //发送广播的数据 intent.putExtra("key", "发送无序广播,顺便传递的数据"); //发送 sendBroadcast(intent); }
(2) 接收广播
新建一个类,继承BroadcastReceiver
public class UnorderedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String data = intent.getStringExtra("key"); System.out.println("接受到了广播,action:"+ action +",data:"+data); //接受到了广播,action:com.example.BROADCAST,data:发送无序广播,顺便传递的数据 } }
记得在清单文件中进行注册
<receiver android:name="com.example.selfreceiver.UnorderedReceiver"> <intent-filter> <action android:name="com.example.BROADCAST"/> </intent-filter> </receiver>
发送自定义的有序广播
(1) 发送广播
// 发送有序广播 public void sendOrderedBroad(View view) { Intent intent = new Intent(); intent a718 .setAction("com.example.ORDERED"); // 发送无序广播 sendOrderedBroadcast(intent,//意图动作,指定action动作 null, //receiverPermission,接收这条广播具备什么权限 new FinalReceiver(),//resultReceiver,最终的广播接受者,广播一定会传给他 null, //scheduler,handler对象处理广播的分发 0,//initialCode,初始代码 "每人发10斤大米,不得有误!", //initialData,初始数据 null//initialExtras,额外的数据,如果觉得初始数据不够,可以通过bundle来指定其他数据 ); }
权限从-1000 至 1000
1) 权限高的广播接收者可以修改广播,甚至可以终止广播
权限高的广播接收者1:
public class ShengReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获取广播的数据 String data = getResultData(); //修改 setResultData("中央下达福利,每人5斤大米"); System.out.println("省政府收到指示, data : "+data); } }
在这里, 这个接收者修改广播为: “中央下达福利,每人5斤大米”
权限低的广播接收者
public class PeopleReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获取广播的数据 String data = getResultData(); System.out.println("老百姓收到福利,感谢党, data : "+data); } }
权限低的接收者 接收到的广播就是修改后的了
2) 终止广播
权限高的广播接收者:
public class ShengReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获取广播的数据 String data = getResultData(); //也可以终止广播,权限小的接收者就接收不到广播了 abortBroadcast(); System.out.println("省政府收到指示, data : "+data); } }
(3) resultReceiver
可以在广播发送者的应用中建一个resultReceiver, 用于接收最终到达的广播,
无论广播是否终止,都会被resultReceiver接收
public class FinalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String resultData = getResultData(); System.out.println("人民收到的最终福利是: "+ resultData); } }
相关文章推荐
- android-BroadcastReceiver 发送有序广播
- Android中BroadcastReceiver接收系统广播
- Android之BroadcastReceiver(广播接受者)详解
- Android 四大组件之一 :BroadCastReceiver 广播接收器详解
- BroadcastReceiver动态广播夸类,夸界面使用
- BroadcastReceiver(广播接收者)
- LocalBroadcastReceiver (本地广播)2017-05-26
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- android-BroadcastReceiver 发送有序广播
- Android:BroadcastReceiver:采用广播接收者实现短信窃听器
- 广播接收者(BroadcastReceiver的应用)
- Android学习篇章57-广播BroadcastReceiver短信监听
- Android中的BroadCastReceiver(广播接收者)
- Android之BroadcastReceiver(接收广播消息)学习笔记(一)
- android静态注册广播(BroadCastReceiver) Calling startActivity() from outside of an Activity
- android在广播接收器BroadcastReceiver里面再进行发送广播,造成当前广播接收器不断循环执行问题
- Android广播接收机制(BroadcastReceiver)
- Android中Intent具体解释(二)之使用Intent广播事件及Broadcast Receiver简单介绍
- android_BroadcastReceiver 广播机制
- android学习笔记之六广播(BroadcastReceiver)