【问题标题】:How to use CallScreeningService in android to reject the incoming call如何在android中使用CallScreeningService拒绝来电
【发布时间】:2020-10-26 14:59:34
【问题描述】:

我正在尝试在我的 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,因为文档中没有提到它。

【问题讨论】:

    标签: android android-service android-manifest android-permissions callscreeningservice


    【解决方案1】:
    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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多