拨号源码详解:
拨号源码架构:
https://www.jianshu.com/p/ca4ab4e9817f/ (一个电话应用,实际由多个代码模块组成。由dialer下的Android.mk可以看出)
https://blog.csdn.net/wds1181977/article/details/61920067 (介绍各个模块的作用)
一、拨号
通过调用Intent.ACTION_CALL,会打开系统的拨号引用。
向外拨号,发现当前显示的activity是(通过sdk工具):
InCallActivity.java
现在,我们需求是想自己实现拨号级来电接听,不走系统UI 。
所以,我的思路是先确定Intent.ACTION_CALL是被谁处理了,怎么处理的,如何调起InCallActivity,InCallActivity又干了啥。
InCallActivity被谁打开的
在xref全局搜索,发现InCallPresenter.java这个类
通过官方的解释,可以知道此类正是管理通话状态, 开启InCallActivity。
搜索InCallPresenter 又会被很多类调用,可见此类是集中处理通话状态的核心类。其中有 InCallServiceImpl,InCallServiceImpl注册在dialer的清单文件里: