如何解决如何在Android中使用CallScreeningService拒绝来电
我正在尝试在我的android应用程序(targetSdkVersion 29)中添加CallScreeningService,而没有使我的应用程序成为调用者应用程序。我按照所有说明进行操作,但仍然无法正确执行操作或在其中丢失了某些内容。 这是我的代码:
public class CallAppService extends CallScreeningService {
@Override
public void onScreenCall(Call.Details callDetails) {
Log.e("CallBouncer","Call screening service triggered");
respondToCall(callDetails,new CallScreeningService.CallResponse.Builder().setdisallowCall(true).setRejectCall(true).build());
}
}
<service android:name="com.myapp.service.CallAppService" android:permission="android.permission.BIND_SCREENING_SERVICE">
<intent-filter>
<action android:name="android.telecom.CallScreeningService"/>
</intent-filter>
</service>
添加了以下权限:
<uses-permission android:name="android.Manifest.permission.READ_CONTACTS"/>
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.Manifest.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.Manifest.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.Manifest.permission.ANSWER_PHONE_CALLS"/>
但是,当我拨打电话时,此服务仍未调用。有什么我想念的吗?我也看到了这个issue,但并没有想到为什么我们需要一个ServiceConnection,因为文档中没有提到它。
解决方法
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
RoleManager roleManager = (RoleManager) getSystemService(ROLE_SERVICE);
Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_CALL_SCREENING);
startActivityForResult(intent,1);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。