- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
黑马程序员安卓教程:广播接收者案例之ip拨号器二.docx
广播接收者案例之ip拨号器二当拨打电话时,系统会广播该拨打电话事件。因此,我们需要做的是:编写一个BroadcastReceiver,通过该广播接收者来获取系统的电话拨打事件,然后再做一系列的业务逻辑处理。具体操作可以分为以下三步:编写广播接收者在“01_ip拨号器”工程中编写一个广播接收者,命名为“OutCallReceiver”。此时工程结构如图1-1所示:图1-1所示在OutCallReceiver类中,使OutCallReceiver继承BroadcastReceiver并重写onReceive方法。代码如例1-1:例1-1publicclass OutCallReceiver extends BroadcastReceiver {/** * 一旦广播消息到来了,就会执行onReceive方法 */@OverridepublicvoidonReceive(Context context, Intent intent) {System.out.println(-------------哈哈哈,有新的外拨电话了。。。。);}}对于onReceive方法,参考如下图1-2所示:图1-2所示从图1-2可知:当广播接收者收到一个Intent广播时,该方法就会被调用。此时我们便可以来查看或修改该广播接收者的结果值。该方法有两个参数,分别是Context和Intent,前者表示这个广播接收者运行的上下文,后者表示这个广播接收者所接收到的Intent意图。声明该广播接收者在第一步中,我们已经编写一个广播接收者啦,即相当于有了一个收音机。有了收音机就可以接收到广播了吗?答案是否定的,此时我们还需要给该收音机上电池,还需调频。同理,有了广播接收者并不能接收到系统的广播,我们需要在清单文件中声明该广播接收者,代码如例1-2所示:例1-2所示application......... receiver android:name=com.itheima.ipdail.OutCallReceiver /receiver/application例1-2在“01_ip拨号器”的清单文件中注册了一个接收器。在声明该内容接收者时,我们使用了 receiver 标签。该标签的name属性赋值为:内容接收者的包名和类名。标签receiver的功能参考如图1-3所示:图1-3所示从图1-3可知:标签receiver声明了一个对于本应用可用的组件即BroadcastReceiver类,从而使本应用可以接收其他应用广播的动作和数据,即使这个应用本身并没有在运行。指定接收的意图在“01_ip拨号器”中,我们只接收系统拨打电话的广播意图,对于其他的广播意图我们并不关心。如何做才能只接收拨打电话的意图?此时,我们可以用意图过滤器intent-filter来过滤出我们关心的广播意图。代码如例1-3所示:例1-3receiverandroid:name=com.itheima.ipdail.OutCallReceiver!-- 调整到合适的频道,关心外拨电话的广播事件 -- intent-filter action android:name=android.intent.action.NEW_OUTGOING_CALL/ /intent-filter/receiver在意图过滤器intent-filter 中配置action的值来代表我们所关心的广播事件,拨打电话的动作就是android.intent.action.NEW_OUTGOING_CALL。Android系统已经帮我们定义好了许多常用的action值,项目中我们可以根据需要查找自己所需要的action,图1-4是几种常见的action。图1-4所示运行程序,然后进入系统的电话拨打应用拨打电话,此时OutCallReceiver就会接收到系统的广播,一旦OutCallReceiver接收到自己所关心的广播,方法onReceive就会执行。此时,logcat打印信息如图1-5所示:图1-5所示图1-5可知:当在拨打电话时,OutCallReceiver中的onReceive方法得到响应啦!下面我们需要做的就是得到拨打电话的号码,然后判断该号码是不是外地号码,如果是则在拨打之前在该号码前添加IP号;反之,直接拨打。调整例1-1代码如例1-4所示:例1-4publicclass OutCallReceiver extendsBroadcastReceiver {@OverridepublicvoidonReceive(Context context, Intent intent) {// 获取广播的结果数据,电话号码String number = getResultData()
文档评论(0)