广播相关汇总

原创 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里,应该也是可以的。

报表相关的后台sql语句

 /*扣件数据明细报表*/ select * from (select t.*, rownum rowno   from (select distinct ts.waybill_no,  ...
  • ymax_ling
  • ymax_ling
  • 2017年03月30日 10:41
  • 347

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

WIFI状态变化会发送系统广播,一些可用的系统广播在WifiManger类中可以看到。...
  • zhang5690800
  • zhang5690800
  • 2017年01月20日 10:58
  • 875

嵌入式相关知识点

嵌入式中小端模式为 低字节存储在低地址,高字节存储在高地址。大端模式为低字节存储在高地址,高字节存储在低地址。 如何判断一个系统为大端模式还是小端模式?  小端模式的数据如何转换为大端模式的数据? ...
  • u010667082
  • u010667082
  • 2015年09月28日 15:18
  • 724

Android - Broadcast 常用的系统广播总结

Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发...
  • qq_15970265
  • qq_15970265
  • 2017年03月28日 11:51
  • 619

Java 学习文章汇总

算法 ** 排序 《蛙步学排序算法之一 - 冒泡排序》 《蛙步学排序算法之二 - 选择排序》 《蛙步学排序算法之三 - 插入排序》 《蛙步学排序算法之四 - 希尔排序》 《蛙步学排序算法之五...
  • love_world_
  • love_world_
  • 2014年03月10日 21:41
  • 2348

正则表达式常用知识点总结

正则表达式 : ① 利用某种模式去匹配一类字符串的公式, ② 所有的字符串或数组的处理都可以使用正则进行简化处理 var str = 'dsdfdgg545fdf'; 纯文本、字符 ...
  • huangyibin628
  • huangyibin628
  • 2014年05月01日 23:13
  • 1022

学渣的Android之广播,日志,权限

BroadcastReceiver Manifest文件中加入receiver的声明(AS会自动做) sendBroadcast方法发送广播,BroadcastReceiver定义中on...
  • ilovekobemusic
  • ilovekobemusic
  • 2016年11月14日 22:56
  • 712

安卓系统常用广播汇总

安卓系统中有很多的广播和接收事件,了解这些事件对开发应用功能的思路会有很大的帮助。 android.provider.Telephony.SMS_RECEIVED 接收到短信时的广播 Inten...
  • HongEnIT
  • HongEnIT
  • 2016年11月24日 18:27
  • 1077

使用AppWidget进行广播更新

使用AppWidget进行广播   android.appwidget包中定义的类: 1、        AppWidgetProvider:定义了AppWidget的基本操作,需要通过子类进行设置;...
  • helloliyewen
  • helloliyewen
  • 2013年09月06日 21:42
  • 1394

汇总统计数据工具—你所不知道的arcgis工具

最近在做土地利用调整完善工作,需要统计各种数据,比如坡度、质量等别、耕地、建设用地等等的面积,而且还要分乡镇。之前都是手工统计(就是使用属性选择工具选择出符合条件的数据来一个个数字统计)。又慢又繁琐,...
  • complx
  • complx
  • 2017年08月23日 11:58
  • 1109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:广播相关汇总
举报原因:
原因补充:

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