广播机制BroadcastReciVer
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小引:广播,四大组件之一。
BroadcastReciver:跟我们生活中的广播类似,频道,发送者,接收者,
一:概念:1..BroadCastReciver:是Android中四大组件之一,
2..没有可以显示的界面,
3:.BroadcastReciver包括两个概念,分别是广播发送者,和广播接收者
4:程序可以自己发送广播自己接收,也可以接收系统或者其他应用程序的广播二:声明周期:1,..onReceive:该函数执行之后广播的声明周期就结束了
2…onRecivie默认在主线程中执行所以不能在该方法中做比较耗时的操作,三:广播的类型:无序广播,有序广播
1:无序广播:接受者之间没有任何关系,发送者直接发送给若干接收者
2:使用sendBrodcast发送,无序并且不可中断的,彼此之间不被第三方因素中断参数:Intent,该intent的作用就是从哪里发送到哪里,实例化一
个intent对象参数是;上下文参数,和发送广播到哪里。
另外如果在清单
文件中定义了一个action动作,那么就创建另外一个intent这里面的参
数就是String,就是清单文件中action的动作。
工作原理就是发送完广
播之后到清单文件中找action动作与intent参数相同的那个类,如果相
同那么就能够接受到广播。
另外Intent除了这种方式添加action动作之
外,还可以用无参构造方法实例化intent并用该对象调用setAction()
方法,将action动作的字符串放进去就可以。
3:广播时可以设置接收者权限仅当有权限的时候才有权限也就是频道对了才会有权限
4:有序广播:一个传一个,发送者给接送者A,接送者A在给接送者B……..
优先级,先接收到的优先级高,也就是说优先级越高接收的越贴近发送者,
优先级高的可以中断优先级低的。
5:使用sendorderBrodcast发送,参数第二个为权限可以暂时不用,在该方法中参数也是Intent,另外一个是权限暂且可以不用,
7:优先级设置,在清单文件中<intent-filter>中定义的android:priority(优先级的意思)属性设置,数字越大优先级越高,,其中有序广播在意图控
制器里面设置优先级关键词是priority,优先级的范围是1到1000 8:被各个接受者逐步接收,优先级高的可以停止广播也可以添加数据给先一个接受者。
9:中断广播的方法;abortBroadcast();直接调用就可以了。
在有序广播中可以中断,在无序广播中
四:创建流程
1:定义一个广播接收类继承BroadcastReciver;添加方法onReciver
2:注册:reciver关键词跟activity、注册的方式相同name=“.MyBroad”
就是那个类名
过滤广播的信息,先运行的那段代码中写Action动作;name=“自定义”
3:发送广播,在mainactivity中发送广播用sendBrodcast方法
五:拦截短信:别人给我发送信息的时候我可以拦截。
1:接收短信广播:android.provider.Telephony.SMS_RECEIVED
(添加权限,SMS)
2:权限:<uses_rerission=“上面的那个”
3:模拟发送短信。
Other-模拟器,telephone action.10086,sms然后发送短
信。
拦击短信是一个有序广播,系统的广播默认优先级是5如果其他的
广播设置优先级大于5如果中断了广播那么系统的消息就收不到了六:常用系统广播:所有的系统action动作都存放在Intent中有activity,action动作也有广播action动作。
1:ACTION_ANSWER动作:处理拨入电话的广播
2:ACTION_CALL_ACTION动作:拨打电话的动作
3:ACTION_TIME_CHANGE:时间改变
4:BOOT_COMPLETED_ACTION广播:在系统启动后,这个动作被
广播一次并且只有一次
5:ACTION_BA TTERY_CHANGED:电池状态改变
6:ACTION_TIMEZONE _CHANGED:时间地域改变
7:ACTION_POWER_ CHANGED:电量改变
8:ACTION_POWER_DISCONNECTED:电池的链接方式
七:系统广播的创建流程:
1:创建一个广播类继承BroadCastReciver并且重写Onreceive方法
2:注册:也是关键词Reciver,意图过滤器中写action动作,属性name=“参这里面的参数是系统广播字段点击进入之后那个字符串的值。
另外action动作可以定义多个,开机启动需要权限,RECEVIVE_BOOT_COMPLETED 3:
八:代码中注册广播
广播注册:registerReciver()参数:第一个参数是一个广播类的对象,第二参数是意图过滤器,其中第一个参数可以创建一个广播类,第二个参数直接实例化就
可以了,在实例化的时候也是需要一个String类型的参数,这个时候该参数
就是action动作,注册的时候就是做了一个限制条件,如果发送的广播
Action动作不能与注册中的相同时那么广播就不能收到,如果相同那么就会
收到广播,其中发送广播的过程相同。
其中系统广播也是一样的,Intent中的字段有很多系统广播action动作,直
接调用就可以了。
,当我们获取到广播之后,就会把广播的祥光信息封装到
Intent中,这个时候就在广播类中用参数intent调用get方法就可以了,例
如想获得电池电量的值,就用intent调用getintExtra()这个方法,参数是
字符串和默认值,其中字符串找到电池的管理类BatteryMannger,里面有很
多的字段,里面就有当前电量的值。
所以直接调用就可以了,同时还有很多
查api即可,包括电池的电量总电量,电池的健康状态,电池的健康状态也
包含很多状态。
取消广播:unregisterReciver()参数是广播类的对象。