许久没有写Blog了,其实这段时间的工作,可以写的内容有很多,但是其一是因为工作太忙了没有时间进行整理,其二则是自己懒了,说是没有时间,但是如果想的话,总能找到时间来进行的,不是吗?
这次我想讨论的话题是关于Android 5.0之后出现的TelecomManager,以及一直就存在的TelephonyManager,它们之间的联系以及差别。
我之前在网上有看到这方面的资料,基本的观点是TelecomManager算是对TelephonyManager的一种替代实现或者补充,通过我对源码进行挖掘,我感觉这么说是一种相当不负责的说法,所以我想这方面进行分析,得出我认为正确的观点与看法。
首先,我们来看看这两个类对第三方App所提供的调用接口,先从功能层面上了解其不同:
以下为TelephonyManager中所提供的部分API
以下为TelecomManager中所提供的部分API
从图中结合日常的工作经历可以知道,TelepnonyManager主要是用来对Telephony相关的信息进行查询,同时提供相关的监听接口对Telephony的状态变化进行监听,从中我们可以看出一个结论,那就是:TelephonyManager从始自终都不能对Telephony做出任何动作,也就是说TelephonyManager所提供的接口是Android系统内部一直就在运行存在的,不会因为TelephonyManager的存在与否出现任何变化,TelephonyManager所要做的就是提供这部分一直存在的信息,至于App想用这部分信息对自己的App进行什么操作不关心,也不会影响到Android的Telephpny框架。说了这么多,我想表明TelephonyManager一直都是让Android App处于Android Telephony的外围,没有任何对于Telephony的操作权限。
我想请各位回想下,在Android 5.0之前,我们若是想在自己的第三方的App里面的进行打电话之类的操作是怎么进行的?这个很简单嘛,只需组装号码信息,然后通过Intent,bundle就可以唤醒Phone应用的呼叫界面,然后用户自行进行电话的拨打。这里其实有个问题,通过这种操作方式的话,实际上,我们还是在应用层进行操作的,虽然也进行跨进程操作,将操作转移到了系统的Phone App里来进行的,但是其实之后的操作都被Phone应用接管,作为第三方App,我们所作的其实非常有限。
当然,若是在自己的自有平台上进行开发,那么可以说,你想怎么搞就怎么搞,更不用说是让第三方打电话这种功能了,但是这个不具有普遍性,暂且不讨论这方面的内容。
懒癌犯了,明日继续写