- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Android Q引入了 CallRedirectionService API - 似乎第 3 方应用程序可以使用它的方式之一是取消调用并通过 VoIP 重新路由它们 - 本质上是拦截电话调用。
我试图按如下方式实现此类
public class CallMonitorService extends CallRedirectionService {
private static final String TAG = "CallMonitorService";
public CallMonitorService() {
}
@Override
public void onPlaceCall(Uri uri, PhoneAccountHandle phoneAccountHandle, boolean b) {
Log.e(TAG, "onPlaceCall:### ");
}
}
正如你所看到的,我正在重写onPlaceCall
,它是CallRedirectionService
中的抽象方法,并简单地保留一条日志语句来检查/测试此回调方法钩子(Hook)是否被调用安卓框架。
我在 Manifest.xml 以及下面的内容中添加了此服务,这是 CallRedirectionService
类的源代码中记录的内容
<service
android:name=".CallMonitorService"
android:permission="android.permission.BIND_REDIRECTION_SERVICE"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.telecom.CallRedirectionService"/>
</intent-filter>
</service>
我的猜测是,当 Android 系统拨出电话时,将调用此 onPlaceCall
,然后我们可以编写自定义代码来对拨出电话执行进一步的操作。我不是 100% 确定这是否是 CallRedirectionService
应该如何工作 - 顺便说一下,developer.android.com 中没有关于如何实现 CallRedirectionService
的示例这篇写作。我在 build.gradle
minSdkVersion 29
targetSdkVersion 29
但是,当进行调用时 - 我的服务内的 onPlaceCall
没有被调用。
我正在使用 Android Q 模拟器进行测试,因为我没有运行 Android Q 的 Android 手机来测试此功能 - 是否可以通过调用模拟电话在 Android 模拟器上进行测试,或者我还缺少什么?
最佳答案
问题是目前文档不完整并且文档中的示例不正确。要解决此问题,需要在 AndroidManifest 中进行更改
android:permission="android.permission.BIND_REDIRECTION_SERVICE"
到
android:permission="android.permission.BIND_CALL_REDIRECTION_SERVICE"
此权限在 https://developer.android.com/reference/android/telecom/CallRedirectionService.html 的 Google 文档中写得不正确。现在。
此外,还需要请求用户允许您的应用程序扮演此角色。在谷歌文档中,这部分目前缺失:
RoleManager roleManager = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
roleManager = (RoleManager) getSystemService(Context.ROLE_SERVICE);
Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_CALL_REDIRECTION);
startActivityForResult(intent, 1);}
关于android - CallRedirectionService 实现不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548666/
Android Q引入了 CallRedirectionService API - 似乎第 3 方应用程序可以使用它的方式之一是取消调用并通过 VoIP 重新路由它们 - 本质上是拦截电话调用。 我试
我是一名优秀的程序员,十分优秀!