You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非默认拨号应用能否通过CallScreeningService查询号码是否为垃圾号码?

非默认拨号应用使用CallScreeningService判断号码合法性的可行性

你的需求可行,但需要遵循以下关键规则和实现步骤:

  • 权限申请:必须在Manifest中声明android.permission.READ_PHONE_STATE和android.permission.CALL_SCREENING权限,其中CALL_SCREENING是Android 8.0(API 26)及以上版本的权限,READ_PHONE_STATE需动态申请。
  • 服务注册:创建继承自CallScreeningService的自定义服务,在Manifest中注册时必须绑定BIND_CALL_SCREENING_SERVICE权限,示例代码如下:
<service
    android:name=".CustomCallScreeningService"
    android:permission="android.permission.BIND_CALL_SCREENING_SERVICE">
    <intent-filter>
        <action android:name="android.telecom.CallScreeningService"/>
    </intent-filter>
</service>
  • 号码判断与处理:重写onScreenCall(Call.Details callDetails)方法,通过callDetails.getHandle().getSchemeSpecificPart()提取来电号码,执行合法性校验后,使用CallResponse.Builder构建响应结果,决定允许或拦截通话:
@Override
public void onScreenCall(Call.Details callDetails) {
    String phoneNumber = callDetails.getHandle().getSchemeSpecificPart();
    boolean isLegitimate = checkNumberLegitimacy(phoneNumber); // 你的自定义校验逻辑

    CallResponse response = new CallResponse.Builder()
            .setDisallowCall(!isLegitimate)
            .build();
    respondToCall(callDetails, response);
}
  • 注意限制:非默认拨号应用无法替代系统默认拨号应用的全局拦截设置,但可通过该服务独立完成来电的合法性判断与拦截操作;部分国产厂商有自定义通话管理机制,需针对性测试适配。

内容的提问来源于stack exchange,提问作者user496854

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:34:55