阻止来电显示欺骗

在 Android 11(API 级别 30)及更高版本中,平台支持 STIR/SHAKEN 协议,在发起呼叫时,该协议提供了一种安全且私密的方法来验证呼叫者的号码并告知接收者。Android 11 及更高版本支持原生拨号器、呼叫筛选和垃圾来电应用等应用访问运营商裁定数据。这使得应用能够在接听电话前识别垃圾来电并通知用户。

对于搭载 Android 11 及更高版本的设备,使用 CallScreeningService API 的呼叫筛选和垃圾来电应用可以访问呼叫筛选功能,从而增强用户隐私和设备性能。使用此 API,应用无需请求个人权限,即可获取在 Android 10 及更低版本中通过标准权限请求无法获得的额外信息。此 API 中提供的数据包括:

  • 来电或去电号码
  • 来电和终止通知
  • 有限访问系统提醒窗口以获取通话中和通话后筛选信息
  • 拒绝来电的功能
  • 通话时长
  • 呼叫断开连接原因
  • STIR/SHAKEN 裁定结果

实现

拨号器应用、呼叫筛选应用和垃圾来电应用应采用 CallScreeningService API。当用户选择此应用作为其默认来电显示和垃圾来电应用时,该应用将获得访问 getCallerNumberVerificationStatus() 方法的权限,该方法会显示来自 STIR/SHAKEN 协议的运营商验证机制的 STIR/SHAKEN 裁定结果。这使得检测自动语音呼叫成为可能。

此外,呼叫筛选应用可以通过调用 ACTION_POST_CALL intent 操作来实现通话后屏幕,该操作会启动一个 Activity,允许用户将呼叫标记为垃圾电话或将号码添加到其保存的联系人列表中。