[SystemCallReceiver.java:onReceive:47]TAG_DIAL2OTT 处理来电广播是什么意

从事android开发的朋友们可能电话状态監听不是很擅长接下来将详细介绍电话状态监听功能的实现步骤,需要了解的朋友可以参考下

如何实现电话状态的监听呢? 

 
//查了下android文檔貌似没有专门用于接收来电的action,所以,非去电即来电. 
//如果我们想要监听电话的拨打状况需要这么几步 : 
* 监听的状态改变事件,初次之外还有很多其他事件哦。 
* 第三步:通过extends PhoneStateListener来定制自己的规则将其对象传递给第二步作为参数。 
//注意方法必须写在super方法后面,否则incomingNumber无法获取到值 
 
 

这里省略了很多代码前面的工莋主要是将动态注册的广播接收者和静态注册的广播接收者按照优先级高低存储在不同的列表中,再将这两个列表合并到receivers列表中这样receivers列表包含了所有的广播接收者(无序广播和有序广播)。在注释1处创建BroadcastRecord对象并将receivers传进去在注释2处调用BroadcastQueue的scheduleBroadcastsLocked方法。
这里先给出ContextImpl到AMS的调用过程的時序图

在注释1处将广播的intent等信息封装为Args对象,并在注释2处调用mActivityThread的post方法并传入了Args对象这个mActivityThread是一个Handler对象,具体指向的就是H紸释2处的代码就是将Args对象通过H发送到主线程的消息队列中。Args继承自Runnable这个消息最终会在Args的run方法执行,Args的run方法如下所示

在注释1处执行了广播接收者的onReceive方法,这样注册的广播接收者就收到了广播并得到了intent
广播的注册、发送和接收过程就讲到这,最后给出剩余部分的调用时序圖


欢迎关注我的微信公众号,第一时间获得博客更新提醒以及更多成体系的Android相关原创技术干货。
扫一扫下方二维码或者长按识别二维碼即可关注。

我要回帖

 

随机推荐