Android:连接时电话呼叫检测?

时间:2012-01-20 13:13:49

标签: java android

我可以使用此代码拨打电话:

Intent dial = new Intent(Intent.ACTION_CALL); 
dial.setData(Uri.parse("tel:5556") ); 
context.startActivity(dial);

但是如何检测是否接听电话或拒绝接听电话? 我尝试过PhoneStateListener,但它无法正常工作。

3 个答案:

答案 0 :(得分:1)

不幸的是,Android没有理由知道何时接听了拨出电话。

PhoneStateListener工作正常,但onCallStateChanged通知的3个状态是不够的。欢迎使用像CALL_STATE_CONNECTED这样的附加状态。

有一个未解决的问题请求此功能,但到目前为止它没有受到太多关注: https://code.google.com/p/android/issues/detail?id=14266

有些人(像我一样)使用logcat回退并尝试推断是否已经回答了拨出电话,但这远非理想的解决方案。

答案 1 :(得分:0)

我也在寻找同一问题的答案,显然没有直接的方法可以做到这一点。但是,我认为我们可以将Call Log内容观察者与PhoneStateListener结合起来以获得呼叫持续时间。 我们可以在启动传出呼叫时在共享首选项中设置一个标志,如果调用日志中有任何更改并且我们的共享首选标志为真,我们可以从呼叫日志中获取呼叫持续时间,以查看呼叫是否曾连接过:)< / p>

答案 2 :(得分:-1)