我知道这已经被问过很多次了,没有答案,但我仍然希望有人终于解决了这个问题。
问题:我有一个运行 Android 2.3 的非 root 设备。我需要创建一个服务:
- 打电话;
- 等到电话被接听;
- 接听电话后挂断电话(超时);
像许多其他人一样,我一直坚持 #2。以下是曾经提出的解决方案的摘要:
- 使用 PhoneStateListener(最流行):不起作用,对于拨出电话它无法检测到我需要什么。
- 使用
com.android.internal.telephony.CallManager
及其方法registerForPreciseCallStateChanged
(例如,这个):不起作用,其中没有注册电话,因此不会触发事件。 - 用于
com.android.internal.telephony.PhoneFactory
获取com.android.internal.telephony.Phone
实例(这是一切的关键):不起作用,工厂没有初始化;尝试使用makeDefaultPhones
调用初始化它会导致安全异常(如此处)。 - 检测传出铃声(链接):作者 - Dany Poplawec - 指出检测铃声可能有助于解决问题,但没有提供任何细节,所以我无法尝试这种技术。
看起来一切都已经尝试过了,但可能还有一个技巧可以拯救我:)