BroadcastReceiver广播接收者
2016-07-03 20:05
190 查看
动态注册和静态注册两种方法,动态注册是程序运行时才接收广播,静态注册不管程序是否运行,都会接收广播!!
如果是接收系统的广播,很多都是需要加上权限的!!!
首先需要继承BroadcastReceive类,重写父类的onReceive方法,当发送广播时就会调用该方法:
public class MyBroadcast extends BroadcastReceiver{@Override//收到广播就会回调该方法public void onReceive(Context context, Intent intent) { Intent参数为发送过来的数据Bundle bundle=intent.getExtras();String str=bundle.getString("mm");Toast.makeText(context,"广播接收者1号的内容为:"+str,Toast.LENGTH_LONG).show();}}
其中,广播接收者在接收有序广播时,可以拦截广播: 调用父类的abortBroadcast方法
1、静态注册广播接收者,在项目清单文件中:
<!-- 广播注册 --><receiver android:name=".MyBroadcast"><intent-filter android:priority="1"><!-- 自定义频道 (要接收的频道,可以是系统的)--><action android:name="mma" /></intent-filter></receiver>其中,意图过滤器的 android:priority属性用来设置优先级(1---1000)(接收有序广播时可以用)
<intent-filter android:priority="500">
2、动态注册广播接收者,JAVA代码:
<span style="white-space:pre"> </span>MyBroadcast broadcast=new MyBroadcast(); 创建广播接受者对象IntentFilter filter=new IntentFilter("mma"); 创建意图过滤器,参数为接收的频道registerReceiver(broadcast,filter); 注册注意:动态注册广播接收者,需要取消注册:
最好是在当前Activity的onDestroy方法中取消注册,调用上下文的unregisterReceiver方法
@Override//退出活动时调用(销毁活动)protected void onDestroy() {super.onDestroy();//取消注册unregisterReceiver(myBroadcast1);unregisterReceiver(myBroadcast2);unregisterReceiver(myBroadcast3);unregisterReceiver(myBroadcast4);unregisterReceiver(myBroadcast5);unregisterReceiver(myBroadcast6);}
发送无序广播: sendBroadcast方法
//参数为广播的频道Intent intent=new Intent("mma");Bundle bundle=new Bundle();bundle.putString("mm","杨钰莹就是我的老婆!!!"); 携带数据intent.putExtras(bundle);//发送广播(参数为意图对象)sendBroadcast(intent);发送有序广播: sendOrderedBroadcast方法
//参数为广播的频道
Intent intent2=new Intent("mma");Bundle bundle2=new Bundle();bundle2.putString("mm","杨钰莹就是我的小老婆!!!");intent2.putExtras(bundle2);//发送广播(参数为意图对象)sendOrderedBroadcast(intent2,null);最后,再来一个本地广播对象,发送的广播只有本程序内部可以接收, LocalBroadcastManager对象
localBroadcastManager=LocalBroadcastManager.getInstance(this);
<span style="white-space:pre"> </span><pre style="font-family: Consolas; font-size: 13.5pt; background-color: rgb(255, 255, 255);"><span style="background-color:#e4e4ff;"><span style="white-space:pre"> </span>localBroadcastManager</span>.sendBroadcast() 发送本地广播,参数也是意图对象
相关文章推荐
- Android中BroadcastReceiver(异步接收广播Intent)的使用
- Android使用BroadcastReceiver实现手机开机之后显示画面的功能
- Android提高之BroadcastReceiver实例详解
- 详解Android中BroadCastReceiver组件
- Android编程四大组件之BroadcastReceiver(广播接收者)用法实例
- Android开发之BroadcastReceiver用法实例分析
- 广播 BroadCastReceiver
- BroadcastReceiver应用详解
- Android中利用广播接受者简单几步实现拨号显示归属地
- 拦截短信
- Android中BroadcastReceiver理解
- 关于安卓手机开机自启动APP无法成功的问题
- android 监听SDCard安装和卸载的代码
- BroadcastReceiver实现android来去电录音功能(外录)
- 小米手机不支持对去电的拦截解决方案(BroadcastReceiver)
- BroadcastReceiver之开机自启动程序
- 工作笔记(1)--Android平板禁用虚拟按键
- 一步一步的学习BroadCastReceiver
- android广播经典小例子