53

一旦ACTION_NEW_OUTGOING_CALL被广播,我需要捕捉对方回答的以下事件。您能否就如何实现这一目标提出建议?我知道这是可能的,因为 Android 拨号器应用程序会在他们拿起时将绿色的 Android 图标更改为该人的照片。

更新:我查看了 Android 上处理拨出电话的应用程序的来源。我注意到以下方法ContactsUtils

/**
 * Kick off an intent to initiate a call.
 */

 public static void initiateCall(Context context, CharSequence
 phoneNumber) {
     Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
             Uri.fromParts("tel", phoneNumber.toString(), null));
     context.startActivity(intent); }

我想我的答案是在监听活动中Intent.ACTION_CALL_PRIVILEGED。所以改写我的问题:有谁知道哪个活动处理Intent.ACTION_CALL_PRIVILEGED

4

4 回答 4

7

我认为没有这样的 API,也没有用于发送 DTMF 的 API,原因与您无法判断呼叫何时连接的原因相同。

于 2012-04-30T09:07:32.663 回答
3

不一定需要可以将其捕获为外部应用程序。绿色的android图标是控制调用的应用程序的一部分,所以它不需要广播来改变图标。

于 2010-02-12T08:48:14.340 回答
2

就 android 的电话管理器而言,您无法以编程方式检测呼叫是否已被应答。这就是说,您无法知道用户何时在另一端拿起电话。Android 有 3 种电话管理器状态,它们都无法检测到呼叫是否被实际接听(在拨出电话的情况下)

于 2014-02-16T09:21:13.873 回答
1

您可能能够做到这一点的唯一方法是解析 Logcat 日志,没有可用的 PhoneStateListener 事件。

有些人在这里要求它:https ://code.google.com/p/android/issues/detail?id=14266

无论如何,在 Android 4.2 以上的版本中,因为 Logcat 是“沙盒”,这可能是不可能的......

于 2013-11-06T17:25:28.593 回答