如果已经说话并且第二个呼叫者正在呼叫,如何不触发PhoneStateListener.CALL_STATE_RINGING

时间:2011-11-22 19:11:20

标签: android telephonymanager

我正在编写一个自动接听电话的应用程序。问题是,如果我已经在通话中并且某人正在响铃,则不应该回答一个问题。 有没有办法实现这一目标?

根据该文档,如果我使用TelephonyManager检查状态,则会CALL_STATE_RINGING而不是CALL_STATE_OFFTHEHOOK

我是否必须添加一个在更改电话状态时设置为true的变量,以便我知道正在进行通话或是否有更好的解决方案?

谢谢!

/ edit:我在未经许可Modify_Phone_State的情况下接听电话,因此只是发现是否有呼叫正在进行中。

2 个答案:

答案 0 :(得分:1)

跟踪呼叫状态接缝的最佳方式,因为您的问题不符合Android标准。

您的问题没有正式答案,因为:

通过Android API,第三方应用程序提供商没有正式的方式接听电话,因为
1:你要使用未记录的API 2:请求MODIFY_PHONE_STATE权限仅适用于root用户/系统签名的应用程序,因为2.3

因此,如果您的问题存在高效(内置代码)工作答案,则可能正式不适用于每个制造商/型号设备。

How to grant MODIFY_PHONE_STATE permission for apps ran on Gingerbread

的更多信息

答案 1 :(得分:1)

好的,因为显然没有办法解决这个问题,所以只要状态转到OFFTHEHOOK(true),我就会在SharedPreference中存储一个布尔值。

当状态变为IDLE时,我将布尔值设置为false。所以这意味着,如果在某人已经调用时触发了RINGING,我会读出该变量为真,然后放弃以下操作。

如果您想了解有关如何接听电话的更多信息,请查看AutoAnswer Project