gpt4 book ai didi

android - CallRedirectionService 实现不起作用

转载 作者:行者123 更新时间:2023-12-03 00:16:34 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com