【发布时间】:2017-06-05 16:00:54
【问题描述】:
自 API 21 以来,Google 一直在向android.telecom 添加功能,特别是通过实现更多TelecomManager 成员和添加InCallService。最后一个应该允许非系统的第 3 方应用程序提供和替换系统呼叫应用程序通话屏幕的功能 - 弹出并允许对 EXTRA_STATE_OFFHOOK 或 EXTRA_STATE_RINGING 广播进行操作的窗口(即来电和去电)。
目前,只有这个屏幕可以完全控制响铃和活动呼叫以及相关的系统回调以及细粒度的信息,通过根受限的MODIFY_PHONE_STATE 权限和许多甚至无法通过反射访问的安全 AOSP 代码。值得注意的是,它是不同制造商的 ROM 风格中变化最大的代码之一,包括启动器、联系人和相机。
这一切都很漂亮,但是......
您是如何实际开发第 3 方 InCallService 的?
即:
- 您如何获得有关 GSM 呼叫的通知和获取实例
- 如何接听这些电话
- 此类回调的生命周期是什么
- Google 是否为此提供任何我尚未找到的实际教程
我不会一次性询问所有这些问题的答案,但任何一个答案都可能与其他问题相关联。这是广泛的,但本质上它必须是:除了 AOSP 代码之外,我在网络上没有偶然发现的示例,并且该代码基于 root 权限的假设,这使得它无法用于 3rd 方应用程序开发目的。
【问题讨论】:
-
对于你的问题 #1,
android.intent.action.PHONE_STATE广播不起作用吗? -
@SharpEdge 您会收到有关“通话”的通知,但您不知道哪个 android.telecom.Call - developer.android.com/reference/android/telecom/Call.html 在这样的情况下,我实际上可以调用#answer(int videoState) 和得到2.整理
-
那里似乎没有很多信息 - 这个问题中的 cmets 可能会有所帮助:stackoverflow.com/q/34861910/334402。有一点需要注意,以防不清楚 - 此 API 将替换 InCallUI - 即控制调用的用户界面。
-
@Mick 是的,不是很多,因此是帖子。我非常清楚 API 的目的是替换 InCallUI。问题是 API 并没有真正提供这样做的方法,据我所知。你发布的那个问题问了很多和我一样的问题,而且这个问题很可能也被关闭了......伙计在我之前两天问过,而且非常相似,我实际上仔细检查了那个人是不是我,但他不是:P!
标签: android gsm telecommunication