从API 21开始,Google一直在为android.telecom添加功能,特别是通过实现更多的TelecomManager成员和添加InCallService.最后一个应该允许非系统的第三方应用程序提供和替换系统Calls app in-call屏幕的功能 - 弹出的窗口允许操作EXTRA_STATE_OFFHOOK或EXTRA_STATE_RINGING广播(即传入和传出的电话呼叫) ).
目前,只有这个屏幕可以完全控制振铃和活动呼叫以及具有细粒度信息的相关系统回调,通过根限制MODIFY_PHONE_STATE权限和许多安全的AOSP代码甚至无法通过反射访问.它特别是不同制造商的ROM风格中最变化的代码之一,以及发射器,触点和相机.
这一切都非常漂亮,但......
你如何实际开发第三方InCallService?
即:
我不会立刻问所有这些问题的答案,但任何一个答案都可能与其他问题有关.这是广泛的,但本质上它需要是:在网络上没有任何例子我偶然发现了AOSP代码,而且该代码基于root权限的假设,这使得它无法用于第三方应用程序开发目的.
添加InCallService了Android API级别23,以提供用于管理电话的用户界面。该文档提供了清单注册示例,但我无法使它正常工作。该应用可以正常编译,但设置中的默认应用不会显示我的应用。
我发现有关该主题的任何信息的唯一地方是一年前关闭的StackOverflow问题。对提出增加android.intent.action.DIAL活动的那个问题发表评论,但这也无济于事。我在活动中也尝试了其他其他意图的组合(android.intent.action.CALL_DIAL和android.intent.action.ANSWER)。
是否有替换手机应用程序所需的代码示例?这些类是否需要提供一些工作方法供应用程序显示?
android android-intent android-6.0-marshmallow android-7.0-nougat android-7.1-nougat