(1)学习摘要:今天自我学习了一下TelephonyManager和ITelephony.aidl的调用关系,即ITelephony.aidl是服务提供方,而TelephonyManager是客户端,封装相应的方法供上层APP使用。

(2)主要类的地址:

ITelephony.aidl:  frameworks/base/telephony/java/com/android/internal/telephony 

PhoneInterfaceManager.java: /packages/services/telephony/src/com/android/phone(继承ITelephony.stub)

ServiceManager:  /frameworks/base/core/java/android/os 

TelephonyManager: /frameworks/base/telephony/java/android/telephony 

(3)详细说明:

TelephonyManager和ITelehony.aidl调用关系的实现

  


ITelephony.aidl PhoneInterfaceManager.java phone (TELEPHONY_SERVICE)

(1)服务器端的接口为ITelephony.aidl,真正的实现类为PhoneInterfaceManager.java

(2)在PhoneInterfaceManager初始化的时候,把自己注册成SystemServer,即:ServiceManager.addService("phone", this),这样客户端(如TelephonyManager)通过ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));就可以获得服务器端的各种服务。

(3)在Phone进程启动时,Default Phone对象创建完之后,PhoneInterfaceManager对象在PhoneGlobals的onCreate()中被初始化,然后调用PhoneInterfaceManager构造方法,最后在publish方法中把自己注册成为systemserver.

相关文章:

  • 2021-12-23
  • 2022-12-23
  • 2021-04-30
  • 2021-07-29
  • 2021-12-27
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-05
  • 2022-02-01
  • 2021-12-14
  • 2021-06-19
  • 2021-10-22
相关资源
相似解决方案