更新记录

1.0.8(2026-09-06)

  • 修复 iOS 安装自定义基座后,调用接口或退出示例页提示插件不存在的问题;同时修复 uni-app x 的 iOS 导入失败。
  • iOS 拨号和短信编辑器按系统实际结果返回回调,短信正文会预填;打开编辑器成功不代表短信已经发送。
  • iOS 不支持的能力会返回明确错误,成功或失败后均执行完成回调;无需修改配置或调用代码。
  • 升级后需要重新制作并安装 iOS 自定义基座;本次不需要重新制作 Android 自定义基座。

1.0.6(2026-08-25)

  • 修复 getRecorderDirectories 已生成录音目录数组、但成功回调仅返回 list,导致客户通过语义字段 res.directories 取不到目录的问题。
  • Android 与非 Android 降级结果统一返回 directories;同时保留 list 作为历史兼容别名,旧调用无需修改。
  • 补充录音目录获取示例、字段含义和 Android 厂商私有目录权限边界。

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 示例。
查看更多

平台兼容性

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,不会伪造成功。

从简单到复杂

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

完整示例源码位于 uni_modules/lizhao-call-kit/example/uniapp/callKit.vueuni_modules/lizhao-call-kit/example/uniappx/index.uvue

最小可运行示例

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 扫描录音文件;targetSdkVersion 33+ 使用 READ_MEDIA_AUDIO,旧 targetSdk 按系统版本兼容 READ_EXTERNAL_STORAGE
MANAGE_EXTERNAL_STORAGE 扫描厂商私有录音目录 是,且需用户手动授权
POST_NOTIFICATIONS Android 13+ 前台通知
FOREGROUND_SERVICE 前台服务
FOREGROUND_SERVICE_DATA_SYNC Android 14+ dataSync 类型前台服务

requestPermissions 会按应用的 targetSdkVersion 归一化媒体权限。即使设备低于 Android 13,targetSdkVersion 33+ 的基座也不会再向 HBuilderX 权限桥提交已废弃的 READ_EXTERNAL_STORAGE

通话监听

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,
  getRecorderDirectories,
  getAllRecorderFiles,
  matchCallRecordings
} from '@/uni_modules/lizhao-call-kit'

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

getRecorderDirectories({
  success(res) {
    // 标准字段为 directories;list 仅作为历史版本兼容别名保留。
    console.log('录音目录候选项', res.directories)
  }
})

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)
  }
})

getRecorderDirectories 返回的每一项包含 path / exists / writable / sourceexists 表示当前应用在现有系统权限下能看到该候选目录;如果设备使用了其他厂商目录,可先通过 setRecorderDirectories 配置实际路径。Android 11 及以上的厂商私有目录仍可能需要用户开启所有文件访问权限,系统加密目录或其他应用沙箱目录无法由普通第三方应用读取。

短信监听与短信回执

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 当前录音扫描应使用的媒体权限;targetSdkVersion 33+ 为 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 系统限制,通常需要默认电话应用或系统签名能力

注意事项

  • iOS 需制作并安装包含本插件的自定义基座;升级涉及原生实现时需重新制作。dialPhone / callPhone 的成功表示系统已接受打开拨号请求,不代表已接通;iOS 不支持指定 SIM 或静默拨号。sendSmsIntent 的成功表示短信编辑器已展示,发送或取消由使用者决定,不代表短信已发送或送达;无法发短信、无法展示编辑器时会触发 fail / complete

  • iOS 的 success / fail / complete 异步返回,complete 在成功或失败回调后触发。不支持的操作返回 9040001;查询和取消监听仍可返回明确的未注册、未运行或空列表状态。

  • 静默短信、短信读取、通话记录、通讯录读取均属于高敏能力,发布前需要准备隐私政策和应用场景说明。

  • 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 模拟器环境检测、风险评分与证据 查看插件
lizhao-gallery-pro 相册媒体分页、筛选、缩略图与导出 查看插件
lizhao-video-thumb 视频封面、批量取帧与 Base64 返回 查看插件
lizhao-ble BLE 扫描、连接、读写、通知与自动重连 查看插件
lizhao-sse-pro SSE、Line、JSONL 与 Raw 流式请求 查看插件
lizhao-pdf-pro PDF 阅读、签批、真实写回与页面处理 查看插件
lizhao-serial-port 路径串口、USB 串口、多会话收发与诊断 查看插件
lizhao-wechat-kit 微信登录、分享、支付、小程序与客服 查看插件
lizhao-video-editor 视频裁剪、压缩、取帧与 FFmpeg/FFprobe 查看插件
lizhao-vpn-pro 企业 VPN、IKEv2、安全接入与脱敏诊断 查看插件

隐私、权限声明

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

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

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

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

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