Android 如何检测正在接听的电话
我试图找到任何方法来接听我的呼出电话,但我找不到任何解决方案。我使用了BroadcastReceiver、TelephonyManager和PhoneStateLinstener,但无法获取传出呼叫的振铃状态。我还试图读取通话记录以搜索当前通话的持续时间,但传出通话的通话记录在通话结束后保存 我已经读到,使用公共API是不可能的。这听起来像是以不同的方式实现的,比如使用内部API。我认为会有办法做到这一点,因为我可以在市场上看到这些应用程序 请给我任何线索和分享你的知识Android 如何检测正在接听的电话,android,call,Android,Call,我试图找到任何方法来接听我的呼出电话,但我找不到任何解决方案。我使用了BroadcastReceiver、TelephonyManager和PhoneStateLinstener,但无法获取传出呼叫的振铃状态。我还试图读取通话记录以搜索当前通话的持续时间,但传出通话的通话记录在通话结束后保存 我已经读到,使用公共API是不可能的。这听起来像是以不同的方式实现的,比如使用内部API。我认为会有办法做到这一点,因为我可以在市场上看到这些应用程序 请给我任何线索和分享你的知识 谢谢。试试下面的方法。我
谢谢。试试下面的方法。我很久以前就这么做了 1) 注册一个
OutGoingCallReceiver
(对SO进行搜索意图操作)
2) 注册一个PhoneStateChangeReceiver
(意图操作:-操作\u电话\u状态\u更改
)
3) 在SharedPrefernces
或全局变量中创建一个标志
4) 在Outgoing CallReceiver中设置此标志为真,现在当选择呼叫时,您将在PhoneStateChangeReceiver
中获得状态为call\u state\u OFFHOOK
,
所以你可以知道这是呼入电话挂接还是呼出电话挂接。在适当的位置禁用标志
你还可以节省时间。我知道这个问题的答案已经很晚了。但我今天遇到了它,有了一个想法,所以分享它。它可能会帮助其他人谁访问该职位在未来
我认为您可以在PhoneStateListener类的onCallStateChanged方法中检查最后一次调用的传出调用时间。如果状态为idle(即TelephonyManager.CALL_state_idle),则获取数据
大概是这样的:
Cursor mCallCursor = context.getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,null,null,null,null);
int duration = mCallCursor.getColumnIndex( CallLog.Calls.DURATION);
while(mCallCursor.moveToFirst())
{
Toast.makeText(context, mCallCursor.getString(duration), Toast.LENGTH_LONG).show();
}
你可以找到更多关于这方面的信息。我还没有测试上面的代码。但这样做应该行得通
您可以检查时间是否为00:00,电话是否未接。否则电话就有人接了
希望这对您有所帮助。谢谢您的回复,总比什么都没有好。但是你的答案不是我想要的。我想获得信号/事件,我的电话被接听。因此,如果状态为摘机,则表示电话被接听。