我正在开发一个Android 2.3.3应用程序。它包含一些EditView,用于显示来电的信息:国家、当前时间、电话号码等。我知道如何获取和显示这些信息。我遇到的问题是不知道如何在来电时显示我的活动而不是标准的来电屏幕。
现在它会在来电后显示这些信息。
如何实现呢?
我正在开发一个Android 2.3.3应用程序。它包含一些EditView,用于显示来电的信息:国家、当前时间、电话号码等。我知道如何获取和显示这些信息。我遇到的问题是不知道如何在来电时显示我的活动而不是标准的来电屏幕。
现在它会在来电后显示这些信息。
如何实现呢?
这是不可能的。根据PhoneApp,用于启动InCallScreen的意图绑定到了phoneapp,你没有机会拦截它。所以屏幕每次都会显示。
您可以尝试的是,在电话进入CALL_STATE_RINGING状态时通过TelephonyManager接收通知,然后在InCallScreen上方绘制您的UI。这可能是可行的,但您将无法从自己的UI中取消呼叫(不确定,但我认为不行)。此外,状态不会立即在InCallScreen弹出时设置,需要延迟几毫秒。
看一下关于在来电界面上显示弹出窗口的问题:
来电屏幕上的弹出窗口
Android 来电屏幕
如果仅仅在来电 UI 上显示弹出窗口不够,那么您可以让弹出窗口覆盖整个屏幕以隐藏它。此时,您需要一种方法来接受来电而不显示默认的来电屏幕(因为您现在正在覆盖它)。快速搜索发现 这个答案 提供了一个解决方案来接受来电。我不确定是否有官方 API 可以实现。
在安卓系统中,默认的来电界面是无法移除的,除非您修改安卓操作系统的编码。但是,您可以使用自己的自定义UI活动覆盖默认界面。这可以通过使用线程概念实现(使自定义设计的UI覆盖默认界面)!