检测是否已接听拨出电话

时间:2010-02-12 08:30:56

标签: android android-intent telephony

广播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 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

不一定需要将其作为外部应用程序捕获。绿色android图标是控制呼叫的应用程序的一部分,因此它不需要广播来更改图标。

答案 2 :(得分:2)

就Android的电话管理器而言,你无法以编程方式检测呼叫是否已被应答。这就是说,你没有选择知道用户何时在另一端选择了手机。 Android有3种状态的电话管理器,但没有一种能够检测到呼叫是否实际应答(如果是呼出呼叫)

答案 3 :(得分:1)

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

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

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