作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个应用程序,它以编程方式接受来电,而不是默认的调用应用程序。在 Android 9 及以下版本中使用 tm.acceptRingingCall()
和 tm.endCall
更容易实现。不幸的是,从 Android 10 开始,这些方法已被弃用。根据文档,可以使用 InCallService
API 来完成。但是,是否可以在不成为默认调用应用程序的情况下做到这一点?
最佳答案
很遗憾,答案是否定的。从 Android 10 开始,处理电话调用的唯一方法是使用 InCallService
API。我用 Java 制作了一个基本的拨号器应用程序,它解释了如何将调用作为默认拨号器应用程序处理的基础知识(链接:https://github.com/adnan-creator/java-custom-dialer)。因此,目前最好的解决方案是成为默认的拨号器应用程序,直到您需要以编程方式接受或拒绝调用的功能。然后您可以将控件传回内置的拨号器应用程序。
这可以通过在控制之前存储内置拨号器的包名来完成telecomManager.getDefaultDialerPackage()
。
然后可以将控件传回内置的拨号器应用
Intent intent = (new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER))
.putExtra(
TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
storedPackageName);
this.startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER);
关于android - 如何在 Android 9+ 中以编程方式接听或拒绝来电?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64775512/
我是一名优秀的程序员,十分优秀!