更新记录

1.0.5(2026-06-24)

  • 修复 uni-app x Android 示例页 options 强转崩溃:页面局部 DemoOptions 不再通过 as CallKitBaseOptions / as PermissionOptions 传入插件 API。
  • 示例页改为直接构造 CallKitBaseOptionsPermissionOptions 强类型对象,避免 Android 运行时出现 DemoOptions cannot be cast to CallKitBaseOptions
  • 已在 Android 自定义基座中通过 USB/ADB 点击“能力”“检查权限”“通话状态”复检,相关 API 均返回 success,未再出现 lizhao-call-kit 相关 ClassCastException
  • 本版本仅修改 uni-app x 示例和发布资料,不修改公共接口、Android 原生实现、web/mp/app-plus/iOS 实现或 uni-app 示例。

1.0.4(2026-06-17)

  • 修复 Android 控制台 deprecated warning:PhoneStateListeneronCallStateChangedSubscriptionInfo.getNumber()TelephonyManager.getLine1Number() 不再直接出现在 UTS 入口中。
  • 新增 Kotlin 原生桥 CallKitPhoneStateBridge.kt,Android 12+ 使用 TelephonyCallback.CallStateListener,Android 12 以下在桥内部保留 PhoneStateListener 兼容分支。
  • 静默短信发送改为通过 Kotlin 桥封装 sendTextMessage(),UTS 文件移除 SmsManager.getDefault() 直接调用。
  • 修复短信 PDU 解析 helper 返回动态类型导致 getOriginatingAddress / getMessageBody / getTimestampMillis 无法识别的问题。
  • 本版本仅调整 Android 平台实现和发布资料,不修改公共接口、web/mp/app-plus/iOS 实现或 uni-app 示例。

1.0.2(2026-06-15)

  • 新增 Android 静默短信发送回执:sendSmsSilent 提交系统后,通过 onCallKitEvent('sent')onCallKitEvent('delivered') 返回发送/送达状态。
  • 新增事件过滤能力:onCallKitEvent(eventName, callback) 支持按 incoming / ended / received / sent / delivered 等事件名单独订阅。
  • 增强通话录音匹配结果,返回 matchedBy / timeDeltaMs / phoneScore / timeScore / confidence,方便客户判断匹配可信度。
  • 增强 Android 通讯录读写,读取联系人时返回邮箱和备注,新增联系人时支持写入邮箱和备注。
  • 补齐 scripts/check-lizhao-call-kit-release-gate.js 发布门禁,并新增 scripts/check-lizhao-call-kit-enhancements.js 增强守卫。
  • 重写 README 接入顺序,按“最小接入 -> 通话监听 -> 录音匹配 -> 短信回执 -> 通讯录 -> 前台服务 -> API 查询”循序渐进说明。
  • 示例页新增短信监听、静默短信回执、事件过滤、录音匹配、新增联系人和权限设置页测试入口。
查看更多

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - -

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序

lizhao-call-kit

lizhao-call-kit 是面向 uni-app / uni-app x 的电话、短信、通讯录与通话录音文件扫描 UTS API 插件。Android 提供真实原生能力;iOS、Harmony、Web 和小程序提供能力探测、系统意图或明确降级,不支持的能力会触发 fail / complete,不会伪造成功。

当前版本:1.0.5

1.0.5 uni-app x 示例 options 强转修复

本版本修复 uni-app x Android 示例页中页面局部 DemoOptions 强转为插件导出 options 类型导致的运行时崩溃。示例页现在直接构造 CallKitBaseOptionsPermissionOptions 强类型对象,避免 Android 运行时出现 DemoOptions cannot be cast to CallKitBaseOptions

1.0.4 Android deprecated warning 收口

本版本将 Android 通话监听、号码读取和静默短信发送中的 deprecated 符号收敛到 Kotlin 原生桥内部,UTS 入口不再直接暴露 PhoneStateListenerSmsManager.getDefault() 等 warning 来源。Android 12+ 使用 TelephonyCallback,低版本在 Kotlin 桥内保留兼容分支。

从简单到复杂

接入场景 推荐能力 说明
只需要拨号或打开短信页 dialPhone / sendSmsIntent 优先使用系统意图,接入成本最低
需要判断当前平台能做什么 getCallKitCapabilities 先拿能力矩阵,再决定展示哪些按钮
需要判断当前 Android 设备是否适配 checkDeviceCompatibility 返回机型、SDK、targetSdk、SIM 卡槽、媒体权限和系统限制提示
需要通话监听和通话记录 requestPermissions / registerCallListener / getCallLogs Android 自定义基座和用户授权后使用
需要匹配通话录音文件 checkCallAutoRecorder / getAllRecorderFiles / matchCallRecordings 插件不直接录音,只扫描系统/OEM 录音文件并匹配
需要短信业务闭环 registerSmsListener / sendSmsSilent / onCallKitEvent 静默短信支持短信回执事件,依赖运营商和系统策略
需要客户资料写入 getContacts / addContact 支持手机号、邮箱和备注

完整示例源码路径:uni_modules/lizhao-call-kit/example/index.vue

最小可运行示例

import {
  getCallKitCapabilities,
  checkDeviceCompatibility,
  dialPhone,
  sendSmsIntent
} from '@/uni_modules/lizhao-call-kit'

// 第一步先探测能力,按平台显示可用功能。
getCallKitCapabilities({
  success(res) {
    console.log('lizhao-call-kit 能力矩阵', res)
  }
})

// Android 真机建议再做机型适配检测,用于展示系统限制和权限建议。
checkDeviceCompatibility({
  success(res) {
    console.log('机型适配诊断', res)
  }
})

// 简单拨号优先使用系统拨号页,避免直接拨号权限门槛。
dialPhone({
  phoneNumber: '10086',
  success(res) {
    console.log('已打开拨号页', res)
  }
})

// 多端短信建议先走系统短信页。
sendSmsIntent({
  phoneNumber: '10086',
  message: '测试短信',
  success(res) {
    console.log('已打开短信页', res)
  }
})

Android 权限与自定义基座

权限 用途 是否需要自定义基座
READ_PHONE_STATE 通话状态监听
READ_CALL_LOG 通话记录查询和录音匹配
CALL_PHONE 直接拨打电话
ANSWER_PHONE_CALLS 接听/挂断 best-effort
READ_SMS 读取短信
RECEIVE_SMS 监听新短信
SEND_SMS 静默发送短信
READ_CONTACTS 读取通讯录
WRITE_CONTACTS 新增联系人
READ_MEDIA_AUDIO / READ_EXTERNAL_STORAGE 扫描录音文件
MANAGE_EXTERNAL_STORAGE 扫描厂商私有录音目录 是,且需用户手动授权
POST_NOTIFICATIONS Android 13+ 前台通知
FOREGROUND_SERVICE 前台服务
FOREGROUND_SERVICE_DATA_SYNC Android 14+ dataSync 类型前台服务

通话监听

import {
  requestPermissions,
  registerCallListener,
  onCallKitEvent,
  offCallKitEvent
} from '@/uni_modules/lizhao-call-kit'

const handleEnded = (event) => {
  console.log('通话结束事件', event)
}

// 请求电话状态权限后再注册监听。
requestPermissions({
  permissions: ['READ_PHONE_STATE', 'READ_CALL_LOG'],
  success() {
    registerCallListener({
      includePhoneNumber: true,
      matchRecorderOnEnd: true,
      success(res) {
        console.log('通话监听已注册', res)
      }
    })
  }
})

// 事件过滤:只接收 ended 事件;传 null 可接收全部事件。
onCallKitEvent('ended', handleEnded)

// 页面卸载时释放。
offCallKitEvent('ended', handleEnded)

指定 SIM 卡拨号

Android 系统限制

callPhone 支持传入 simSlotIndex,Android 会优先使用 TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE 指定通话卡槽,并同时写入部分厂商拨号器兼容字段。该能力需要 CALL_PHONE 权限;如果当前设备没有对应卡槽、ROM 不接受指定卡槽参数或系统策略拦截,系统可能回退到默认通话卡。

import {
  requestPermissions,
  callPhone
} from '@/uni_modules/lizhao-call-kit'

// 示例使用 SIM1 直接拨号;SIM2 通常传 1。
requestPermissions({
  permissions: ['CALL_PHONE', 'READ_PHONE_STATE'],
  success() {
    callPhone({
      phoneNumber: '10086',
      simSlotIndex: 0,
      success(res) {
        console.log('已发起指定 SIM 拨号', res)
      }
    })
  }
})

通话录音文件匹配

通话录音不由插件直接录制。插件只检测系统/OEM 自动录音设置、跳转设置页、扫描录音文件,并按号码和时间与通话记录匹配。

import {
  checkCallAutoRecorder,
  getAllRecorderFiles,
  matchCallRecordings
} from '@/uni_modules/lizhao-call-kit'

checkCallAutoRecorder({
  success(res) {
    console.log('系统自动录音状态', res)
  }
})

getAllRecorderFiles({
  includeDuration: true,
  limit: 50,
  success(res) {
    console.log('录音文件列表', res)
  }
})

matchCallRecordings({
  windowMs: 180000,
  limit: 20,
  success(res) {
    // 每条结果包含 score、matchedBy、timeDeltaMs、phoneScore、timeScore、confidence 和 reason。
    console.log('匹配可信度', res)
  }
})

短信监听与短信回执

sendSmsSilent 会把短信提交给系统,最终发送和送达状态通过 onCallKitEvent('sent')onCallKitEvent('delivered') 返回。送达回执依赖运营商、SIM 卡、系统短信策略和用户授权。

import {
  registerSmsListener,
  sendSmsSilent,
  onCallKitEvent
} from '@/uni_modules/lizhao-call-kit'

onCallKitEvent('received', (event) => {
  console.log('收到短信', event.payload)
})

onCallKitEvent('sent', (event) => {
  console.log('短信发送回执', event.payload)
})

onCallKitEvent('delivered', (event) => {
  console.log('短信送达回执', event.payload)
})

registerSmsListener({
  includeBody: true,
  success(res) {
    console.log('短信监听已注册', res)
  }
})

sendSmsSilent({
  phoneNumber: '10086',
  message: '静默短信测试',
  requestCode: 904001,
  success(res) {
    console.log('短信已提交系统', res)
  }
})

通讯录读取与新增

import {
  getContacts,
  addContact
} from '@/uni_modules/lizhao-call-kit'

getContacts({
  keyword: '张',
  limit: 20,
  success(res) {
    // Android 返回 displayName、phoneNumbers、emails 和 note。
    console.log('联系人列表', res)
  }
})

addContact({
  displayName: '测试客户',
  phoneNumbers: ['***'],
  emails: ['customer@example.com'],
  note: '由 lizhao-call-kit 写入的测试备注',
  success(res) {
    console.log('联系人已新增', res)
  }
})

前台服务

import {
  startForegroundService,
  stopForegroundService
} from '@/uni_modules/lizhao-call-kit'

startForegroundService({
  title: '电话短信监听服务运行中',
  content: 'lizhao-call-kit 正在按系统策略保持监听'
})

stopForegroundService()

API 查询

getCallKitCapabilities(options)

参数 类型 必填 说明 默认值 可选参数
options CallKitBaseOptions 回调参数 success / fail / complete
字段 类型 说明
supported boolean 当前平台是否支持至少一种能力
platform string 平台标识
supportLevel string native / intent / limited / unsupported
requiresCustomBase boolean 是否需要自定义基座

checkDeviceCompatibility(options)

说明 检测当前 Android 设备、系统版本、targetSdkVersion、录音媒体权限、SIM 卡槽拨号基础条件和常见 ROM 风险。非 Android 平台返回明确降级结果。

参数

参数 类型 必填 说明 默认值 可选参数
options CallKitBaseOptions 回调参数 success / fail / complete

返回值

字段 类型 说明
supported boolean 当前平台是否可使用 Android 原生主能力
platform string 平台标识
brand string 设备品牌
manufacturer string 设备厂商
model string 设备型号
androidVersion string Android 系统版本
sdkInt number Android SDK 版本号
targetSdkVersion number 当前应用 targetSdkVersion
requiresAllFilesAccess boolean Android 11+ 是否建议开启所有文件访问权限
requiresForegroundService boolean 是否建议开启前台服务保持监听稳定性
supportsSimSlotCall boolean 当前设备是否具备指定 SIM 卡槽拨号的基础条件
activeSimCount number 可用 SIM 数量
mediaPermissionName string 当前录音扫描应使用的媒体权限,Android 13+ 通常为 READ_MEDIA_AUDIO
warnings Array 可能影响监听、录音扫描或短信读取的风险提示
recommendations Array 建议用户开启或检查的系统设置

requestPermissions(options)

参数 类型 必填 说明 默认值 可选参数
options PermissionOptions 权限请求参数 默认请求全部运行时权限 permissions / success / fail / complete
options.permissions Array 要请求的权限名 全部插件权限 READ_PHONE_STATE / READ_CALL_LOG / READ_SMS / SEND_SMS / READ_CONTACTS

registerCallListener(options)

参数 类型 必填 说明 默认值 可选参数
options CallListenerOptions 通话监听参数 includePhoneNumber / matchRecorderOnEnd / recorderMatchWindowMs / success / fail / complete
options.includePhoneNumber boolean 是否尝试返回号码 true true / false
options.matchRecorderOnEnd boolean 挂断后是否尝试匹配录音 false true / false

matchCallRecordings(options)

参数 类型 必填 说明 默认值 可选参数
options MatchCallRecordingsOptions 匹配参数 自动查询通话记录和录音 callLogs / recorderFiles / windowMs / limit / success / fail / complete
options.windowMs number 匹配时间窗口 180000
字段 类型 说明
score number 综合匹配分
matchedBy string phone+time / phone / time / none
timeDeltaMs number 录音文件与通话记录时间差
phoneScore number 号码匹配分
timeScore number 时间匹配分
confidence string high / medium / low / none

sendSmsSilent(options)

参数 类型 必填 说明 默认值 可选参数
options SendSmsOptions 短信发送参数 phoneNumber / message / requestCode / success / fail / complete
options.phoneNumber string 手机号
options.message string 短信内容
options.requestCode number 用于关联短信回执 自动生成

getContacts(options) / addContact(options)

参数 类型 必填 说明 默认值 可选参数
options.keyword string 联系人姓名关键词
options.displayName string 新增时是 联系人姓名
options.phoneNumbers Array 手机号列表 []
options.emails Array 邮箱列表 []
options.note string 备注 空字符串

支持平台

平台 是否支持 说明
Android App 支持 支持通话监听、通话记录、录音文件扫描匹配、短信、通讯录、前台服务
iOS App 部分支持 支持能力探测、拨号和短信系统意图;通话监听、通话记录、短信读取、静默短信和通讯录首版不开放
Harmony App 降级 提供能力探测和明确错误
Web 部分支持 支持 tel: / sms: 意图,其他高敏能力不支持
微信小程序 降级 提供能力探测和明确错误
支付宝小程序 降级 提供能力探测和明确错误

错误码

错误码 含义 说明
9040001 unsupported 当前平台或能力不支持
9040002 permission denied 权限未授权
9040003 invalid argument 参数错误
9040004 context unavailable Android 上下文不可用
9040005 call listener unavailable 通话监听不可用
9040006 call log unavailable 通话记录不可用
9040007 recorder file unavailable 录音文件不可用
9040008 sms unavailable 短信能力不可用
9040009 contact unavailable 通讯录能力不可用
9040010 foreground service unavailable 前台服务不可用
9040012 notification permission denied 通知权限不足
9040018 sms send failed 短信发送失败
9040020 restricted by system 系统限制,通常需要默认电话应用或系统签名能力

注意事项

  • 静默短信、短信读取、通话记录、通讯录读取均属于高敏能力,发布前需要准备隐私政策和应用场景说明。
  • Android 10+ 对后台启动、通话录音和默认电话应用限制明显,接听/挂断只按 best-effort 返回,不承诺所有设备可用。
  • 插件不会绕过系统权限,也不会直接录制蜂窝通话。
  • 修改 Android 平台 UTS、权限、Manifest 或前台服务后,需要重新运行 Android 原生联编或重新打 Android 自定义基座。

发布门禁

D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-enhancements.js
D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-release-gate.js
D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-harmony-exports.js

真机验收全部完成后再运行严格发布门禁:

D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-release-gate.js --require-runtime-verified

作者系列UTS插件

以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。

插件 能力方向 插件市场
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 电话状态、通话记录、拨号、读取/接收/发送短信、读取/写入通讯录、通知、前台服务、文件读取等权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

通话状态、通话记录、录音文件元数据、短信、通讯录,均仅在用户授权和业务合规前提下采集

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。