广播相关汇总

原创 2013年12月03日 09:57:18

动态的关闭全局广播接收器

调用packageManager的方法来关闭组件,setComponentEnabledSetting(ComponentName componentName, int newState, int flags)。

newState:组件新的状态,可以设置三个值,分别是如下:

  不可用状态:COMPONENT_ENABLED_STATE_DISABLED
  可用状态:COMPONENT_ENABLED_STATE_ENABLED
  默认状态:COMPONENT_ENABLED_STATE_DEFAULT
  flags:行为标签,值可以是DONT_KILL_APP或者0。
例如,当监听到开机广播并启动后,可以关闭这个监听器。

< receiver android:name=".ToggleReceiver">
< intent-filter>
< action android:name="android.intent.action.BOOT_COMPLETED"/>
< /intent-filter>
//启动完成后关闭组件
final ComponentName receiver = new ComponentName(context,ToggleReceiver.class);
final PackageManager pm = context.getPackageManager();
count++;
if (count > 1) {
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);

接收器接收广播的顺序

普适原则 
同等优先级的动态接收器,先注册的先接收 
同等优先级的静态接收器,接收广播的顺序与String[] java.io.File.list()顺序一致 
ordered广播 
假设有如下优先级的5个接收器
1.动态A(优先级=1)
2.动态B(优先级=2)
3.动态C(优先级=2)
4.静态D(优先级=1)
5.静态E(优先级=2)
并且B先于C注册
那么实际接收顺序应为
B C E A D
也就是说,如果静态接收器的优先级高于动态接收器的优先级,那么还是静态接收器先接收到广播(比如接收短信) 
非ordered广播 
动态接收器高优先级 > 动态接收器低优先级 > 静态接收器高优先级 > 静态接收器低优先级 
注意:有些广播,我们无法用静态接收器接收 
比如ACTION_SCREEN_ON,当屏幕被点亮的时候系统发送此广播 
如果你尝试在manifest中注册receiver来接收,那么会失败。

带权限的广播

Activity,Broadcast Receiver,Content Providers,Service都可以定义权限,以限制访问。例如:
<activity 
android:name=".MyActivity" 
android:label="@string/app_name" 
android:permission="com.paad.DETONATE_DEVICE"> 
</activity>
sendBroadcast(intent,"com.example.broadcast")
//在发送广播的应用manifest里面定义权限
<permission android:name="com.example.broadcast" android:protectionLevel="normal"/> 

//在接收的应用manifest里面申请权限,这样就能收到带权限的广播了。
<uses-permission android:name="com.example.broadcast"/>
有一点需要注意:看到有些文章是将权限定义写在接收的应用manifest里,应该也是可以的。

安卓时间相关的广播(Intent.ACTION_TIME_TICK)

1.Intent.ACTION_TIME_TICK 含义:系统每分钟会发出该广播2.用法: IntentFilter filter = new IntentFilter(); filt...

BroadcastReceiver广播相关API和说明

本文作者 本文作者:Hensen_ Hensen_的博客地址: http://blog.csdn.net/qq_30379689 1 前言 又是一篇基础总结性的文章来啦,个人...

Android 7.0 ActivityManagerService(5) 广播(Broadcast)相关流程分析

本篇博客旨在分析Android中广播相关的源码流程。

AppWidget,及其与广播的相关处理

1.什么叫AppWidget?既是手机桌面放置的控件,shortcuts是快捷方式 2.AppWidgetProviderInfo对象是为AppWiget提供元数据,包括布局更新频率等数据,被定义在...
  • cys410
  • cys410
  • 2012年03月29日 13:21
  • 331

Android —— WIFI状态相关的系统广播

WIFI状态变化会发送系统广播,一些可用的系统广播在WifiManger类中可以看到。...

关于Android系统的局域网广播的相关东东

搜索吧:关键词:android, udp, 局域网, lan,广播,源代码 最近公司在做一个游戏项目,互联网对战方面的东东已经差不多搞定,还剩下局域网方面的东东没做,大概的功能需求是需要达到...

TEANMA(天玛)-公共广播系统中扬声器配置及相关注意事项解析

众所周知,每当需要传输的功率一定时,传输电压越高则传输电流越小,传输损耗也越小,传输距离越大。定压式公共广播系统正是基于此原理,采用较高的电压可将信号传输到较远距离,对较远距离、较广区域进行广播。由这...

无线广播相关信号(收音机)的发射与接收

一:无线电发射原理 在交流电的周围有变化的磁场存在,变化的磁场又会引起变化的电场,,这样电场和磁场不断的相互交替产生,就能把电磁场向周围空间传播开来,这种向四周空间传播的电磁场就做电磁波。电磁波在传递...

广播机制相关内容整理

1.   介绍  在高速局域网中使用广播是一种通常的作法。因为IP中未指出广播的通用标准,因此协议实现者也就无法使用它了。 这里我们考虑的是不可靠的,非串行的,包可重复的广播。我们假设数据...
  • vbubble
  • vbubble
  • 2011年11月17日 10:51
  • 640

菜鸟的android之路——广播相关

android开发中的广播问题
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:广播相关汇总
举报原因:
原因补充:

(最多只允许输入30个字)