我试过很多自动接听来电的方法。
1)尝试使用私有API的(结束呼叫是工作的,接听呼叫不)
2)使用SendOrderedBroadcast和本文中提到的各种其他方法如何在Android 5.0(棒棒糖)中以编程方式接听来电?
如果我使用私有api,它会抛出SecurityException(请求MODIFY_DEVICE_STATE权限),如果我在上面的帖子中使用方法,它会显示以下警告
"由于没有窗口焦点而取消事件:KeyEvent {action=ACTION_UP, keyCode=KEYCODE_HEADSETHOOK, scanCode=0, metaState=0, flags=0x20, repeatCount=0, eventTime=7550277, downTime=7550277, deviceId=-1, source=0x101}"
请帮助我,如果有任何解决这个问题的方法,我使用Android版本23。
Thanks in advance.
我通过在TelephonyManager中使用AnswerRingingCall函数解决了这个问题,这将由电话状态侦听器(TelephonyManager. call_state_ringing)触发,当您使用此方法时,它实际上会抛出一个安全异常(请求MODIFY_STATE许可),但这将通过将apk推到/system/priv_app
要接听来电,还需要做一些额外的工作。
1)您需要访问"DRAW OVER OTHER APPS",即屏幕覆盖权限,这也将包括android.permission。SYSTEM_ALERT_WINDOW权限
2)你需要实现一个Broadcast Receiver来检查入局呼叫。
3)当检测到CALL_STATE_RINGING时,使用WindowsManager启动一个新的活动来绘制其他应用程序。此外,在此活动中设置唤醒锁,使手机在锁屏模式下处于唤醒状态。
4)也使用这个活动使用应答呼叫方法,这将工作,因为现在你的应用程序是在顶部和前景。
5)杀死这个活动,如果需要的话,从这个活动打开你的项目,然后杀死这个活动。
新的解决方案在这里,看看这个问题:
编程接受牛轧糖调用