BroadCastReciver
来源:互联网 发布:人工智能的利弊 编辑:程序博客网 时间:2024/06/05 08:26
闲暇时间研究了下 BroadcastReciver 这里给大家做下分享。
广播有三种:1、无序广播
2、有序广播
3、滞留广播(不过这一方法现在已经过时)
我们常用的是无序广播和有序广播,其中无序广播设置广播拦截 abortBroadcast是不能用的。滞留广播,发送的是一个静态的广播,即使注册reciver在发送广播以后,同样可以接收到广播。
BroadCastReciver 的注册分为两种:1、代码中动态注册
2、manifest中静态注册。
代码中动态注册广播,当调用了unregisterReceiver 后,广播会被销毁
静态注册的广播,广播会随着程序的结束而结束
代码中动态注册的时候,在Activity中注册以后,还要注销reciver。我这里是在onCreate中注册,onDestory中注销,代码如下:
public class BoradcastActivity extends Activity { private BC1 reciver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_broadcast); reciver =new BC1(); IntentFilter filter = new IntentFilter("BC1");//设置广播顾虑器 registerReceiver(reciver,filter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(reciver); } public void doClick(View v) { Log.d("ljy", "doClick"); Intent intent = new Intent("BC1");//必须和上面广播过滤器中参数一致,reciver才能接收到广播。 intent.putExtra("msg", "test1"); Bundle bundle = new Bundle(); bundle.putString("msgString", "test2"); intent.putExtras(bundle);// sendBroadcast(intent);无序广播 sendOrderedBroadcast(intent,null);//有序广播 }
广播接收器代码:
public class BC1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("ljy","-----BC1----getStringExtra-------->"+intent.getStringExtra("msg")); Log.d("ljy","------BC1----getBundle--------------->"+intent.getExtras().getString("msgString")); }}
上面是动态广播的注册,下面介绍静态广播的注册:
在manifest中添加如下代码即可注册:
<receiver android:name=".broadcast.BC1"> <intent-filter android:priority="100"> <action android:name="BC1"></action> </intent-filter> </receiver>
这里的priority是设置广播的优先级,从-1000到1000.优先级越大,接收广播越靠前。
有序广播中如果了设置自定义权限,应用中如果没有设置此权限是无法接收此广播的。设置权限如下:
代码中:
public void doClick(View v) { Log.d("ljy", "doClick"); Intent intent = new Intent("BC1"); intent.putExtra("msg", "test1"); Bundle bundle = new Bundle(); bundle.putString("msgString", "test2"); intent.putExtras(bundle);// sendBroadcast(intent);无序广播 sendOrderedBroadcast(intent, "socct.application.myBroadCast");//有序广播 }
</pre><pre name="code" class="html">manifest中
<permission android:name="socct.application.myBroadCast"></permission> //自定义权限<uses-permission android:name="socct.application.myBroadCast"></uses-permission> //应用权限 ,如果不添加该权限,应用是无法接收该广播的
0 0
- BroadCastReciver
- android BroadcastReciver 笔记
- Android BroadCastReciver学习笔记
- 80 Android BroadcastReciver
- android基础 BroadCastReciver
- Android BroadcastReciver(广播)
- Android 四大组件生命周期:BroadCastReciver
- android BroadcastReciver初步研究--注册部分
- android 广播 BroadcastReciver写成内部类问题
- Notification+BroadcastReciver+Service实现推送下载
- Broadcast和BroadcastReciver的安全使用
- Android学习——服务Service与广播接收者BroadcastReciver
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- Android的BroadcastReciver,增加 addDataScheme("file") 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略
- maven中scope依赖范围与classpath的关系
- 指针函数与函数指针的区别
- Delphi异常处理try except语句和try finally语句用法以及区别
- ubuntu apache24 安装
- Mysql主从复制和读写分离方案分析
- BroadCastReciver
- jQuery在页面加载时动态修改图片尺寸
- iOS:Scale to Fill,Aspect Fit,Aspect Fill
- 三种字符串逆序的方法
- Android 自定义View 中的OnMeasure的用法
- PCB板热设计
- Android SDK Manager国内无法更新的解决方案
- Jboss wildfly部署在linux环境上无法访问的问题
- eclipse提示Syntax error, insert “EnumBody” to complete EnumDeclaration