我正在开发一款可以通过编程方式接听电话的应用。我已经阅读了很多相关内容,并尝试了许多方法来实现它。
在5.0及以上版本中唯一适用于我的解决方案如下 -
Runtime.getRuntime().exec("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
虽然此方法有效,但实际应答时间会延迟1.5到5秒。这种延迟是一个真正的交易破坏者,因为我的应用程序需要拦截所有来电,我不能延迟回答过程。
还有其他方法可以更快地运作吗?
谢谢
答案 0 :(得分:0)
根据另一个答案[1],这取决于所使用的超级用户客户端。据说Chainfire's SuperSU
[2]比Superuser
[1] Need root to execute shell command "input keyevent <#>" through an app at runtime?
[2] https://play.google.com/store/apps/details?id=eu.chainfire.supersu
答案 1 :(得分:0)
根据您的情况,如果只有root方法适用于您,一种方法是使用后台服务保持root shell打开,并在需要时将输入keyevent命令传递给它。这样可以在每次调用时节省进程和shell的启动时间。您可以使用RootShell等库轻松完成此操作。