更新记录
1.0.1(2026-06-12)
- 修复 Harmony 真机运行时报
lizhaoCallKit_utsProxy.onCallKitEvent is not a function的问题。 - Harmony 平台入口补齐完整 API 占位导出、能力探测、权限状态和事件监听占位;不支持的 Android 高敏能力返回明确降级,不伪造成功。
- 同步升级
package.json与uni_modules.json版本和插件市场描述。
平台兼容性
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 是电话、短信、通讯录与通话录音文件扫描 UTS API 插件。Android 首版提供真实原生能力;iOS / Harmony / Web / 小程序提供能力探测和明确降级,不支持能力会触发 fail / complete,不会伪造成功。
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android App | 支持 | 支持通话监听、通话记录、录音文件扫描匹配、短信、通讯录、前台服务 |
| iOS App | 部分支持 | 支持能力探测、拨号和短信系统意图;通话监听、通话记录、短信读取、静默短信和通讯录首版不开放 |
| Harmony App | 降级 | 提供能力探测和明确错误 |
| Web | 部分支持 | 支持 tel: / sms: 意图,其他高敏能力不支持 |
| 微信小程序 | 降级 | 提供能力探测和明确错误 |
| 支付宝小程序 | 降级 | 提供能力探测和明确错误 |
权限与自定义基座
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 类型前台服务 | 是 |
通话录音不由插件直接录制。插件只检测系统/OEM 自动录音设置、跳转设置页、扫描录音文件,并按号码和时间与通话记录匹配。
API 列表
getCallKitCapabilities(options)
说明 获取当前平台能力矩阵。
支持平台 Android / iOS / Harmony / Web / 微信小程序 / 支付宝小程序
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | CallKitBaseOptions | 否 | 回调参数 | 无 | success / fail / complete |
| options.success | function | 否 | 成功回调 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| supported | boolean | 当前平台是否支持至少一种能力 |
| platform | string | 平台标识 |
| supportLevel | string | native / intent / limited / unsupported |
| requiresCustomBase | boolean | 是否需要自定义基座 |
checkPermissions(options) / requestPermissions(options)
说明 检查或请求 Android 权限。非 Android 平台返回降级说明。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | PermissionOptions | 否 | 权限请求参数 | 默认检查全部权限 | permissions / success / fail / complete |
| options.permissions | Array | 否 | 要检查或请求的权限名 | 全部插件权限 | READ_PHONE_STATE / READ_CALL_LOG / READ_SMS / SEND_SMS / READ_CONTACTS |
registerCallListener(options) / unregisterCallListener(options)
说明
注册或取消 Android 通话监听。监听事件通过 onCallKitEvent 返回。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | CallListenerOptions | 否 | 监听参数 | 无 | includePhoneNumber / matchRecorderOnEnd / recorderMatchWindowMs / success / fail / complete |
| options.includePhoneNumber | boolean | 否 | 是否尝试返回号码 | true | true / false |
| options.matchRecorderOnEnd | boolean | 否 | 挂断后是否尝试匹配录音 | false | true / false |
| options.recorderMatchWindowMs | number | 否 | 录音匹配时间窗口 | 180000 | 无 |
getCallLogs(options) / getCallLogsByFilter(options)
说明 读取 Android 通话记录,并可按号码、类型、时间过滤。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | CallLogsOptions | 否 | 查询参数 | 无 | limit / offset / phoneNumber / fromDate / toDate / type / matchRecorder |
| options.limit | number | 否 | 最大返回条数 | 100 | 无 |
| options.phoneNumber | string | 否 | 号码过滤 | 无 | 无 |
| options.type | string | 否 | 通话类型 | 无 | incoming / outgoing / missed / rejected / blocked |
| options.matchRecorder | boolean | 否 | 是否同步匹配录音 | false | true / false |
dialPhone(options) / callPhone(options)
说明 打开系统拨号页或直接拨打电话。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | PhoneOptions | 是 | 电话参数 | 无 | phoneNumber / simSlotIndex / success / fail / complete |
| options.phoneNumber | string | 是 | 电话号码 | 无 | 无 |
checkCallAutoRecorder(options) / openCallAutoRecorderSettings(options)
说明 检测常见系统/OEM 自动录音目录,或跳转可能的录音设置页。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | CallKitBaseOptions | 否 | 回调参数 | 无 | success / fail / complete |
setRecorderDirectories(options) / getAllRecorderFiles(options) / searchRecorderFiles(options)
说明 配置录音扫描目录、读取全部录音文件或按条件搜索。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | RecorderFilesOptions | 否 | 搜索参数 | 默认常见目录 | directories / phoneNumber / keyword / fromDate / toDate / limit / includeDuration |
| options.directories | Array | 否 | 自定义扫描目录 | 常见系统目录 | 无 |
| options.phoneNumber | string | 否 | 号码过滤 | 无 | 无 |
| options.keyword | string | 否 | 文件名关键词 | 无 | 无 |
| options.includeDuration | boolean | 否 | 是否读取音频时长 | false | true / false |
matchCallRecordings(options)
说明 按号码片段和时间窗口匹配通话记录与录音文件。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | MatchCallRecordingsOptions | 否 | 匹配参数 | 自动查询通话记录和录音 | callLogs / recorderFiles / windowMs / limit |
| options.windowMs | number | 否 | 匹配时间窗口 | 180000 | 无 |
registerSmsListener(options) / getSmsList(options) / sendSmsSilent(options) / sendSmsIntent(options)
说明 Android 支持短信监听、短信读取和静默发送;多端支持系统短信意图或明确降级。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SendSmsOptions | 是 | 短信发送参数 | 无 | phoneNumber / message / requestCode / success / fail / complete |
| options.phoneNumber | string | 是 | 手机号 | 无 | 无 |
| options.message | string | 是 | 短信内容 | 无 | 无 |
getContacts(options) / addContact(options)
说明 Android 支持读取和新增通讯录。iOS / Harmony / Web / 小程序首版会返回不支持错误,后续版本再接入对应平台原生实现。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | ContactsOptions | 否 | 联系人查询参数 | 无 | keyword / limit / success / fail / complete |
| options.keyword | string | 否 | 姓名关键词 | 无 | 无 |
onCallKitEvent(eventName, callback) / offCallKitEvent(eventName, callback?)
说明
订阅或取消插件事件。持续监听需配合 offCallKitEvent 释放。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| eventName | string | 否 | 事件名,首版 Android 不强制过滤 | null | incoming / outgoing / answered / ended / received / sent / error |
| callback | function | 是 | 事件回调 | 无 | 无 |
uni-app 示例
import {
checkPermissions,
requestPermissions,
registerCallListener,
onCallKitEvent,
getAllRecorderFiles
} from '@/uni_modules/lizhao-call-kit'
// 先检查高敏权限,未授权时引导用户授权。
checkPermissions({
success(res) {
console.log('权限状态', res)
}
})
// Android 端请求电话、短信、通讯录等权限。
requestPermissions({
success(res) {
console.log('授权完成', res)
},
fail(err) {
console.log('授权失败', err)
}
})
// 注册事件监听,页面卸载时应调用 offCallKitEvent。
onCallKitEvent(null, (event) => {
console.log('电话短信事件', event)
})
// 注册通话监听,挂断后尝试匹配系统自动录音文件。
registerCallListener({
matchRecorderOnEnd: true,
success(res) {
console.log('通话监听已开启', res)
}
})
// 扫描常见系统/OEM 通话录音目录。
getAllRecorderFiles({
includeDuration: true,
success(res) {
console.log('录音文件', res)
}
})
uni-app x 示例
import { getCallKitCapabilities, sendSmsIntent } from '@/uni_modules/lizhao-call-kit'
// 先按能力矩阵判断当前平台,不支持能力不要误判为失败业务。
getCallKitCapabilities({
success(res) {
console.log('能力矩阵', res)
}
})
// 多端优先使用系统短信意图,Android 才可按授权使用 sendSmsSilent。
sendSmsIntent({
phoneNumber: '10086',
message: '测试短信',
success(res) {
console.log('已打开系统短信页', res)
}
})
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9040001 | current platform unsupported | 当前平台不支持该能力 |
| 9040002 | permission denied | 权限不足 |
| 9040003 | invalid parameter | 参数不合法 |
| 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 | 前台服务不可用 |
| 9040011 | operation failed | 原生操作失败 |
| 9040012 | notification permission denied | 通知权限不足 |
| 9040013 | all files access denied | 所有文件访问权限不足 |
| 9040014 | activity unavailable | 无法打开系统页面 |
| 9040015 | content resolver unavailable | ContentResolver 不可用 |
| 9040016 | empty result | 结果为空 |
| 9040017 | direct call blocked | 直接拨号被系统拦截 |
| 9040018 | silent sms blocked | 静默短信被系统拦截 |
| 9040019 | file operation blocked | 文件操作失败 |
| 9040020 | android version restricted | Android 版本或默认应用策略限制 |
注意事项
- 静默短信、短信读取、通话记录、通讯录读取均属于高敏能力,发布前需要准备隐私政策和应用场景说明。
- Android 10+ 对后台启动、通话录音和默认电话应用限制明显,接听/挂断只按 best-effort 返回,不承诺所有设备可用。
- 修改
utssdk/app-android/index.uts、AndroidManifest.xml、权限或前台服务后,必须重新打 Android 自定义基座或重新运行原生联编。
发布前检查
发布源码包前建议在项目根目录运行:
D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-release-gate.js
该命令会检查目录结构、根入口导出、API 契约、Android 权限、iOS 首版能力边界、README 和演示页入口。
如果要确认当前 Android 模拟器或真机安装的自定义基座是否已经包含 lizhao-call-kit 原生运行时,运行:
D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-installed-runtime.js
该命令会检查设备端 uni_modules/lizhao-call-kit/utssdk/app-android/classes.dex。如果只存在 index.kt / config.json 而没有 classes.dex,说明当前基座尚未完成 Android 原生联编,页面可以打开但原生 API 无法作为发布运行态证据。
如果要在真机验收全部完成后再做严格发布判断,运行:
D:\HBuilderX\plugins\node\node.exe scripts\check-lizhao-call-kit-release-gate.js --require-runtime-verified
严格模式要求 verification-checklist.md 中 Android 自定义基座、通话监听、短信、通讯录、前台服务和降级平台验收项都已按真实设备结果确认。仅导出 appResource 或热更新资源不能替换已编译进基座的 UTS 原生逻辑;涉及 Android 原生 UTS、Manifest、权限或前台服务变更时,最终验收必须安装最新 Android 自定义基座。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6483
赞赏 5
下载 12233982
赞赏 1918
赞赏
京公网安备:11010802035340号