更新记录

1.0.0(2026-10-23)

初始版本

  • 电话/短信/通话录音/通讯录全套能力,统一为 zy-call UTS 插件
  • 权限:申请权限、检查/跳转所有文件访问权限
  • 通话录音:检测是否开启自动录音、跳转自动录音设置页、获取全部录音文件、按条件搜索录音文件、自定义录音目录
  • 通话监听:注册/取消监听、挂断、接听、当前通话状态、是否已注册;挂断后自动返回录音文件路径与时长
  • 通话记录:获取全部记录、按条件查询、指定卡槽拨打电话
  • 短信:注册/取消监听、静默发送(支持指定 subId)、获取短信列表
  • 设备信息:是否双卡、获取手机号码、默认通话卡槽、机型适配判断
  • 文件操作:移动、复制、删除文件或目录、获取音频时长
  • 通讯录:获取通讯录、添***人
  • 前台服务:通知权限检查与跳转、开启/关闭前台通知服务
  • 配置:setConfig 设置挂断后搜索录音文件的延迟时间

平台兼容性

uni-app(4.72)

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

uni-app x(4.72)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
× × 5.0 1.0.0 × × ×

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × × √

插件介绍

安卓电话通话短信监听 UTS 插件(zy-call),支持获取所有录音文件、来电监听、去电监听、挂断电话后返回通话录音文件、短信监听与静默发送、通话记录、通讯录、获取手机号码、前台通知保活等功能。

平台支持:仅 Android(uni-app app-vue / app-nvue、uni-app x app-android),iOS 无对应系统能力。

接口风格:所有方法统一为 options 单对象入参,回调通过对象属性承载:

methodName({
    // 业务参数……
    success ?: (res : XxxResult) => void   // 成功回调
    fail ?: (err : ZyCallFail) => void     // 失败回调(UniError 规范)
    complete ?: (res : any) => void        // 完成回调(成功/失败都会触发)
    onEvent ?: (res : XxxEvent) => void    // 仅监听注册类方法,持续回调
})

失败回调 err 为 UniError 对象:err.errSubject = 'zy-call'、err.errCode(见下方错误码表)、err.errMsg(具体原因,如缺少的权限名)。

权限说明

插件所需权限

权限 用途 申请方式
READ_PHONE_STATE 通话监听、双卡判断、手机号 运行时申请
READ_PHONE_NUMBERS 获取本机号码 运行时申请
ANSWER_PHONE_CALLS 接听/挂断电话(API 26+) 运行时申请
CALL_PHONE 直接呼出电话 运行时申请
READ_CALL_LOG 读取通话记录 运行时申请
RECORD_AUDIO 通话监听前置校验 运行时申请
RECEIVE_SMS / SEND_SMS / READ_SMS 短信监听、静默发送、短信列表 运行时申请
READ_CONTACTS / WRITE_CONTACTS 通讯录查询、添加 运行时申请
POST_NOTIFICATIONS 前台通知(API 33+) 运行时申请
READ/WRITE_EXTERNAL_STORAGE 读取公共目录录音文件(API < 30) 运行时申请
MANAGE_EXTERNAL_STORAGE 「所有文件访问权限」(API 30+) 特殊权限,跳转设置页

requestPermission 缺省会按系统版本动态裁剪后申请上表全部运行时权限;MANAGE_EXTERNAL_STORAGE 为特殊权限,需用 toAllFilesPermissionPage 跳转设置页授予。

权限被永久拒绝怎么办

Android 运行时权限规则:权限一旦被用户永久拒绝(勾选过“不再询问”,或部分 OEM ROM 首次拒绝即视为永久拒绝,或累计拒绝达到上限),requestPermissions 不再弹系统框、直接静默拒绝。此时 requestPermission / checkPermissionState 会把这些权限放入返回值的 permanentlyDenied 列表中,需调用 toAppSettingsPage 跳转应用详情设置页引导用户手动开启,返回页面后调用 checkPermissionState 刷新状态。

import { requestPermission, checkPermissionState, toAppSettingsPage } from '@/uni_modules/zy-call'

export default {
    onShow() {
        // 页面显示时刷新(从系统设置页返回也会触发)
        checkPermissionState({
            success: (res) => {
                if (!res.allGranted && res.permanentlyDenied.length > 0) {
                    toAppSettingsPage({}) // 引导用户去设置页手动开启
                }
            }
        })
    },
    methods: {
        applyPermission() {
            requestPermission({
                success: (res) => {
                    console.log('授予情况', res.list, '全部授予', res.allGranted)
                    if (res.permanentlyDenied.length > 0) {
                        uni.showToast({ title: '部分权限被永久拒绝,请去设置页开启', icon: 'none' })
                    }
                },
                fail: (err) => console.error('申请失败', err.errCode, err.errMsg)
            })
        }
    }
}

使用注意事项

  • 涉及大量危险权限(电话、短信、通讯录、存储),建议真机测试;模拟器无 SIM 卡时拨号/短信/手机号相关能力不可用。
  • 建议配合保活方案使用:本插件内置前台通知服务 startForeground(Android 8+ 后台启动受限时会自动回退为普通服务),退到后台仍可监听来电/短信;同时建议把应用加入系统省电白名单。
  • 各厂商对通话录音目录的路径不统一,插件已内置 15 个厂商的常见目录探测;目录不在预期位置时用 setCustomAudioRecorderDir 指定。
  • 所有方法均为异步;阻塞型操作(文件枚举、短信/通讯录查询)在子线程执行,回调切回主线程。

快速开始

  1. 在 HBuilderX 中把插件导入项目(uni_modules 方式),或直接从插件市场选择「zy-call」导入。
  2. 页面中引入:
import { registerCallListener } from '@/uni_modules/zy-call'
// 或
import * as zyCall from '@/uni_modules/zy-call'
  1. 最小可用示例(注册通话监听,挂断后拿录音文件):
import { requestPermission, registerCallListener } from '@/uni_modules/zy-call'

export default {
    onLoad() {
        requestPermission({}) // 先申请权限
        registerCallListener({
            onEvent: (e) => {
                if (e.status === 3) {
                    console.log('挂断,录音文件:', e.audioPath, '时长:', e.duration)
                } else {
                    console.log('通话事件:', e.status, e.phoneNumber)
                }
            },
            success: (res) => console.log('注册成功'),
            fail: (err) => console.error('注册失败', err.errCode, err.errMsg)
        })
    },
    onUnload() {
        unregisterCallListener({}) // 页面卸载时取消,避免回调泄漏
    }
}

错误码表

errCode 含义 常见触发方法
9031001 参数错误 各方法入参校验失败
9031002 未注册通话监听 endCall / answerRingingCall / setConfig(delayTime)
9031003 未注册短信监听 unregisterSmsListener 重复取消
9031004 缺少运行时权限 所有需要危险权限的方法(errMsg 含缺失权限名)
9031005 当前安卓版本不支持 getPhoneNumber(API < 22)、answerRingingCall(API < 26)、getDefaultCallSimCard(API < 24)
9031006 文件或目录不存在 moveFile / copyFile / deleteFile / getAudioDuration
9031007 操作失败 复制/移动/删除失败、短信发送异常等
9031008 短信发送失败 sendSmsHide(resultCode=1)
9031009 无服务 sendSmsHide(resultCode=4)
9031010 PDU 为空 sendSmsHide(resultCode=3)
9031011 无线电台关闭 sendSmsHide(resultCode=2)
9031012 短信未送达 sendSmsHide(resultCode=0)
9031013 添加通讯录失败 addContact
9031014 获取上下文失败 内部异常(应用上下文为空)

API 详解

一、权限

requestPermission(options)

申请权限(批量运行时权限)。对未授予的权限发起系统授权弹窗;已被永久拒绝的权限不再弹框,通过 permanentlyDenied 返回。

参数 类型 必填 说明
permissions string[] 否 要申请的权限名列表,缺省为插件所需的全部运行时权限(按 SDK 版本动态裁剪)
success (res: ZyCallPermissionResult) => void 否
fail / complete 否

success 返回:

字段 类型 说明
list { name: string, granted: boolean }[] 各权限授予情况(弹窗前状态)
allGranted boolean 是否全部授予
permanentlyDenied string[] 被永久拒绝、不再弹框的权限名列表

注意:UTS 插件无法可靠接收 onRequestPermissionsResult,success 返回的是弹窗前状态。用户授权后请重新调用 requestPermission 或 checkPermissionState 确认。

checkPermissionState(options)

只查询权限状态,不发起授权弹窗。参数同 requestPermission(permissions 可缺省),返回结构完全一致。适合页面 onShow 时刷新(如从设置页返回后)。

checkAllFilesPermission(options)

检查是否有「所有文件」访问权限(Android 11+ 读取公共目录录音文件需要)。

success 返回:{ status: boolean }

toAllFilesPermissionPage(options)

跳转到「所有文件」访问权限页面。无参数。

toAppSettingsPage(options)

跳转应用详情设置页,引导用户手动开启被永久拒绝的运行时权限。无参数。


二、通话录音

checkCallAutoRecorder(options)

检测当前机型是否开启了「通话自动录音」(系统设置项,各厂商 key 不同,已内置 15 个厂商的探测逻辑)。

success 返回:{ isOpen: boolean }

关闭自动录音时,挂断事件可能拿不到录音文件(status 为 4/5)。

toCallAutoRecorderPage(options)

按机型跳转到对应的「通话自动录音」设置页(华为/小米/OPPO/vivo/三星走各自设置组件,其余机型跳拨号界面)。无参数。

getAllRecorderFiles(options)

获取当前机型通话录音目录下的全部文件(按最后修改时间倒序,不递归子目录)。

success 返回:{ files: ZyCallRecorderFile[] }

ZyCallRecorderFile 字段 类型 说明
path string 文件绝对路径
time number 时间戳(毫秒)
lastModifiedTime number 最后修改时间戳(毫秒)
timeDate string yyyy-MM-dd HH:mm:ss
lastModifiedTimeDate string yyyy-MM-dd HH:mm:ss

getRecorderFiles(options)

按条件搜索录音文件。

参数 类型 必填 说明
startTime number 否 起始时间(毫秒时间戳),缺省 0
endTime number 否 结束时间(毫秒时间戳),缺省当前时间
keywords string 否 文件名关键字,缺省不限

success 返回:{ files: ZyCallRecorderFile[] }(结构同上)

setCustomAudioRecorderDir(options)

自定义录音文件目录。设置后 getAllRecorderFiles / getRecorderFiles / 挂断取录音均从该目录查找。

参数 类型 必填 说明
dir string 是 录音目录绝对路径

三、通话监听

registerCallListener(options)

注册通话监听。注册结果走 success/fail(一次性);通话事件走 onEvent(持续回调)。

参数 类型 说明
onEvent (res: ZyCallEvent) => void 通话事件持续回调
success / fail / complete 注册结果

ZyCallEvent 字段:

字段 类型 说明
isIncoming boolean 是否来电(false 为去电)
status number 事件状态码,见下表
phoneNumber string 本次通话号码
uuid string 本次通话标识(同一次通话各事件一致)
audioPath string | null status=3 时有效:录音文件绝对路径
duration number | null status=3 时有效:录音时长(毫秒)
time number | null status=3 时有效:录音文件时间戳
lastModifiedTime number | null status=3 时有效:录音文件最后修改时间戳
timeDate string | null status=3 时有效:时间格式化字符串
lastModifiedTimeDate string | null status=3 时有效:最后修改时间格式化字符串
recorderDirPath string | null 挂断事件附加:当前机型的录音目录路径

status 取值:

status 含义
1 来电响铃
2 去电拨出 / 通话中(含接听来电)
3 挂断,已找到通话录音文件(audioPath/duration 等字段有效)
4 挂断,未找到录音文件(已开启自动录音,录音可能延迟落盘)
5 挂断,未找到录音文件(未接通 / 未开启自动录音)
6 来电响铃时已有去电通话中

挂断事件内部延迟 delayTime(默认 2000ms,可用 setConfig 调整)后再搜索录音文件,等待厂商录音落盘。

unregisterCallListener(options)

取消通话监听。无参数。

endCall(options)

挂断当前通话(需先注册通话监听)。API 28+ 用 TelecomManager,以下用反射 getITelephony。无参数。

answerRingingCall(options)

接听来电(需先注册通话监听,Android 8.0+)。无参数。

getCallState(options)

获取当前通话状态。success 返回:{ state: number }(0 空闲 / 1 响铃 / 2 通话中)

isRegisterCallListener(options)

判断是否已注册电话监听。success 返回:{ isRegisterListener: boolean }


四、通话记录

getAllCalls(options)

获取全部通话记录(按时间倒序)。无参数。

success 返回:{ list: ZyCallCallRecord[] }

ZyCallCallRecord 字段 类型 说明
name string 联系人姓名,未存储联系人为空串
number string 电话号码
dateTime number 通话时间戳(毫秒)
date string yyyy-MM-dd HH:mm:ss
duration number 通话时长(秒)
type number 1 来电已接 / 2 去电 / 3 未接来电 / 5 拒接
slotId number 卡槽订阅 ID(subscription_id)

getCalls(options)

按条件查询通话记录(各条件均可选,组合为 AND)。

参数 类型 必填 说明
name string 否 联系人姓名,精确匹配
number string 否 电话号码,精确匹配
startTime number 否 起始时间(毫秒时间戳),Android 7.0+ 生效
endTime number 否 结束时间(毫秒时间戳),Android 7.0+ 生效

success 返回:{ list: ZyCallCallRecord[] }

callPhone(options)

拨打电话。

参数 类型 必填 说明
number string 是 电话号码
slot number 否 卡槽:1 / 2,缺省 1
isTelephone boolean 否 true 仅打开拨号界面(ACTION_DIAL),false 直接呼出,缺省 false
isSystemSelectPhone boolean 否 true 交由系统弹窗选择卡槽,缺省 false

五、短信

registerSmsListener(options)

注册短信监听。注册结果走 success/fail;收到短信走 onEvent(持续回调)。

参数 类型 说明
onEvent (res: ZyCallSmsEvent) => void { number: 发件号码, content: 短信内容 }
success / fail / complete 注册结果

unregisterSmsListener(options)

取消短信监听。无参数。

sendSmsHide(options)

静默发送短信(无界面,自动处理长短信分段,发送/送达状态通过 success/fail 回调)。

参数 类型 必填 说明
phoneNumber string 是 接收号码
message string 是 短信内容
subId number 否 订阅 ID(可用 getPhoneNumber / getDefaultCallSimCard 获取),缺省默认卡

success 表示已提交发送;送达结果会再次以 success 回调或 fail(9031012 未送达)返回。

getSmsList(options)

获取短信列表(按时间倒序)。

参数 类型 必填 说明
phoneNumber string 否 对端号码,精确匹配
content string 否 内容关键字,模糊匹配

success 返回:{ list: ZyCallSms[] }

ZyCallSms 字段 类型 说明
phoneNumber string 对端号码
person number 联系人 ID(未匹配为 0)
content string 短信内容
time number 时间戳(毫秒)
type number 1 收件箱 / 2 发件箱
read number 0 未读 / 1 已读

六、设备信息

isMultiSim(options)

是否是双卡。success 返回:{ isMultiSim: boolean }

getPhoneNumber(options)

获取各卡槽手机号码(需要 READ_PHONE_STATE + READ_PHONE_NUMBERS;部分机型/运营商返回空号)。

success 返回:{ numbers: ZyCallSimInfo[] }

ZyCallSimInfo 字段 类型 说明
number string 本机号码(可能为空串)
subId number 订阅 ID(静默发短信使用)
displayName string 显示名称(通常是运营商名)
carrierName string 运营商名称
slotId number 卡槽下标:0 / 1
mcc string 移动国家码
mnc string 移动网络码

getDefaultCallSimCard(options)

获取通话/短信的默认卡槽信息(Android 7.0+)。success 返回:{ defaultSim: ZyCallSimInfo }(字段同上)

isAdaptPhone(options)

判断当前机型是否在支持的厂商列表中。success 返回:{ status: boolean, settings: string[] }(settings 为系统设置中与录音/通话相关的 key:value 列表,辅助排查)


七、文件操作

moveFile(options)

移动文件(先复制后删除源文件)。

参数 类型 必填 说明
fromFilename string 是 源文件路径
toFilename string 是 目标文件路径(父目录不存在时自动创建)

copyFile(options)

复制文件。参数同 moveFile。

deleteFile(options)

删除文件或目录(目录递归删除)。

参数 类型 必填 说明
filePath string 是 文件或目录路径

getAudioDuration(options)

获取音频时长。

参数 类型 必填 说明
path string 是 音频文件路径或 http(s) 地址

success 返回:{ duration: number }(毫秒)


八、通讯录

getContacts(options)

获取手机通讯录(按姓名排序)。

参数 类型 必填 说明
phoneNumber string 否 电话号码,精确匹配
name string 否 姓名,模糊匹配

success 返回:{ list: ZyCallContact[] },元素为 { name: string, phoneNumber: string }

addContact(options)

添加通讯录。

参数 类型 必填 说明
name string 是 联系人姓名
phoneNumber string 是 联系人电话

九、前台服务

isForegroundPermission(options)

是否有前台通知权限(Android 13+ 还需 POST_NOTIFICATIONS 运行时权限)。success 返回:{ status: boolean }

toForegroundPage(options)

跳转到通知权限页面。无参数。

startForeground(options)

开启前台通知服务(保活,建议监听来电/短信期间保持开启)。

参数 类型 必填 说明
title string 否 通知标题,缺省为应用名
content string 否 通知内容,缺省为「应用名正在运行」
icon string 否 通知图标 mipmap 资源名(不含扩展名),缺省为应用图标

stopForeground(options)

关闭前台通知服务。无参数。


十、其他配置

setConfig(options)

配置自定义数据。

参数 类型 必填 说明
delayTime number 否 挂断后延迟多少毫秒搜索录音文件,缺省 2000ms;部分机型录音落盘慢时可调大(需先注册通话监听)

完整场景示例

来电监听 + 挂断自动取录音:

import {
    requestPermission,
    registerCallListener,
    unregisterCallListener,
    startForeground,
    setConfig
} from '@/uni_modules/zy-call'

export default {
    onLoad() {
        startForeground({ title: '通话监听中', content: '正在监听来电与短信' }) // 保活
        setConfig({ delayTime: 3000 }) // 挂断后等 3 秒再找录音文件
        this.applyPermissionAndListen()
    },
    methods: {
        applyPermissionAndListen() {
            requestPermission({
                success: (res) => {
                    if (!res.allGranted) {
                        uni.showToast({ title: '请先授予全部权限', icon: 'none' })
                        return
                    }
                    this.startListen()
                },
                fail: (err) => console.error('权限申请失败', err.errCode, err.errMsg)
            })
        },
        startListen() {
            registerCallListener({
                onEvent: (e) => {
                    if (e.status === 1) {
                        console.log('来电响铃', e.phoneNumber)
                    } else if (e.status === 2) {
                        console.log('通话中', e.phoneNumber)
                    } else if (e.status === 3) {
                        console.log('挂断,录音文件', e.audioPath, '时长', e.duration)
                        // 拿到 e.audioPath 后可播放、上传或移动到自己的目录
                    } else {
                        console.log('挂断,未拿到录音,status =', e.status, '目录', e.recorderDirPath)
                    }
                },
                success: (res) => console.log('监听注册成功'),
                fail: (err) => console.error('监听注册失败', err.errCode, err.errMsg)
            })
        }
    },
    onUnload() {
        unregisterCallListener({})
    }
}

各厂商录音目录说明

插件按 Build.MANUFACTURER 自动探测以下目录(子目录不递归,按顺序取第一个存在的):

厂商 录音目录(相对外部存储根目录)
华为 / 荣耀 / ptac / wiko / unicomvsens / liantong Sounds/CallRecord/record、Sounds/CallRecord、Sounds/CallReCord/record、Sounds/CallReCord、Sounds、record、Record
小米 MIUI/sound_recorder/call_rec
魅族 com.android.soundrecorder/files、Recorder/call、Recorder
OPPO / 一加 / realme Music/Recordings/Call Recordings/ThirdRecord、Music/Recordings/Call Recordings、Music/Recordings/Call/Recordings、Oppo/media/audio/calls、Recordings/Call Recordings、Recordings、Record/PhoneRecord、PhoneRecord
vivo Recordings/Record/Call、Record/Call、Call、录音/通话录音、录音、PhoneRecord
联想 Audios/VoiceCall、Sound_recorder/PhoneRecord、Sound_recorder/Phone_record、Audio/Recorder/PhoneRecorder、Audio/Recorder/Phone_recorder
中兴 voice、CallRecord
摩托罗拉 / moto Music/Sound recorder/Phone recorder、Music/Sound_recorder/Phone_recorder、Music/Sound recorder/Phone_recorder、Music/Sound_recorder/Phone recorder、Music/Recorder/records
三星 Recordings/Call、Call
天翼 Sounds/CallRecord
努比亚 CallRecord
jrd Sounds
coolpad Music
其他(5g/lebest) Android/media/com.android.dialer/voicecall、Music/voicecall

不在上述目录时,用 setCustomAudioRecorderDir 指定实际目录。isAdaptPhone 可判断当前机型是否在支持列表。

常见问题

Q1:点了申请权限,有些权限不弹框? 这些权限已被永久拒绝(勾选过“不再询问”或 OEM ROM 策略)。用 toAppSettingsPage 跳转设置页手动开启,返回后 checkPermissionState 刷新。

Q2:挂断后 status 是 4/5,拿不到录音文件? 依次检查:① checkCallAutoRecorder 确认系统「通话自动录音」已开启;② 录音目录是否在预期位置(不在则 setCustomAudioRecorderDir);③ 部分机型落盘慢,setConfig({ delayTime: 5000 }) 调大延迟;④ 未接通(响铃即挂)本身不会产生录音(status 5)。

Q3:双卡手机怎么指定卡拨号/发短信? 拨号用 callPhone({ number, slot: 2 })(slot 1/2);静默发短信的 subId 通过 getPhoneNumber 或 getDefaultCallSimCard 获取。

Q4:getPhoneNumber 返回空号? 本机号码依赖运营商写入 SIM 卡(EF_MSISDN),部分 SIM 卡未写入时任何方式都取不到,与插件无关。

Q5:退到后台收不到来电/短信广播? 开启 startForeground 前台通知保活,并把应用加入系统省电白名单(各厂商设置路径不同)。

Q6:Android 8+ 提示无法启动前台服务? 插件已做兼容:startForegroundService 在后台启动受限时自动回退为 startService;仍失败时通过 fail 回调返回错误,请确保从前台页面调用。

权限声明(Manifest 合并)

插件 utssdk/app-android/AndroidManifest.xml 声明以下权限,会与宿主应用合并:

权限 用途 类型
android.permission.ANSWER_PHONE_CALLS 接听/挂断电话(API 26+) 危险(运行时申请)
android.permission.READ_PHONE_STATE 通话监听、双卡判断、手机号 危险(运行时申请)
android.permission.READ_PHONE_NUMBERS 获取本机号码 危险(运行时申请)
android.permission.CALL_PHONE 直接呼出电话 危险(运行时申请)
android.permission.READ_CALL_LOG 读取通话记录 危险(运行时申请)
android.permission.WRITE_CALL_LOG 写入通话记录 危险(运行时申请)
android.permission.RECORD_AUDIO 通话监听前置校验 危险(运行时申请)
android.permission.MODIFY_AUDIO_SETTINGS 通话时音频模式切换 普通(安装授予)
android.permission.WRITE_EXTERNAL_STORAGE 读取公共目录录音文件(API < 29) 危险(运行时申请)
android.permission.READ_EXTERNAL_STORAGE 读取公共目录录音文件(API < 33) 危险(运行时申请)
android.permission.MANAGE_EXTERNAL_STORAGE 「所有文件访问权限」(API 30+) 特殊(跳转设置页)
android.permission.RECEIVE_SMS 接收短信广播 危险(运行时申请)
android.permission.SEND_SMS 静默发送短信 危险(运行时申请)
android.permission.READ_SMS 读取短信列表 危险(运行时申请)
android.permission.READ_CONTACTS 查询通讯录 危险(运行时申请)
android.permission.WRITE_CONTACTS 添加通讯录 危险(运行时申请)
android.permission.POST_NOTIFICATIONS 前台通知(API 33+) 危险(运行时申请)
android.permission.FOREGROUND_SERVICE 前台服务保活 普通(安装授予)

隐私、权限声明

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

android.permission.ANSWER_PHONE_CALLS android.permission.READ_PHONE_STATE android.permission.READ_PHONE_NUMBERS android.permission.CALL_PHONE android.permission.READ_CALL_LOG android.permission.WRITE_CALL_LOG android.permission.RECORD_AUDIO android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STORAGE android.permission.MANAGE_EXTERNAL_STORAGE android.permission.RECEIVE_SMS android.permission.SEND_SMS android.permission.READ_SMS android.permission.READ_CONTACTS android.permission.WRITE_CONTACTS android.permission.POST_NOTIFICATIONS android.permission.FOREGROUND_SERVICE

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

通话录音文件、通话记录、短信与通讯录数据仅在本机读取与处理,不会上传至任何服务器

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

无

暂无用户评论。