更新记录

1.0.3(2024-03-05)

1、增加是否双卡判断; 2、增加指定 SIM 卡拨号。

1.0.2(2023-11-24)

1、增加免提功能; 2、增加通话录音功能(Android 9及以下使用,Android 10及以上为普通录音)

1.0.1(2023-09-17)

1、修复App内号与系统拨号来回切换时的显示问题;

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


插件使用说明

插件声明

  1. 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还;
  2. 如有使用上的疑问、进上方交 流 群联系作者;
  3. 本插件支持定制,定制费用另算;
  4. 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。

注意事项

  1. 必须设置当前App为默认通话应用; 必须打开监听(使App显示在其他应用的上层); 必须开启需要的权限; 请根据需要在合适的时机调用相关API;
  2. 记得配置相关的权限, 具体见权限声明;
  3. 插件虽然向下兼容至21(Android 5.0), 但功能必须在23(Android 6.0)及以上才可以使用;
  4. 部分型号手机不支持设置默认通话应用,因此不保证在所有手机都能使用, 请谨慎购买。

插件引入

首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module

var callModule = uni.requireNativePlugin('LY-DCPhoneCallPlugin-PhoneCallModule');

插件Api说明

1.1 设置当前App为默认通话应用

必须设置, 否则插件无法正常使用

callModule.setToTheDefaultCallApplication();

1.2 检测当前App是否为默认通话应用

let res = callModule.isDefaultCallApplication();
返回值: Boolean, true默认通话应用, false非默认通话应用

1.3 通话页面配置项

callModule.setCallPageConfig(config);

config 参数说明

成员名 数据类型 必填 说明 适用
recordPath String 否 录音文件保存路径 Android
bgImg String 否 背景图 Android
pickUpImg String 否 接听图标 Android
hangUpImg String 否 挂断图标 Android
callInlabel String 否 呼入文案 Android
callOutlabel String 否 呼出文案 Android
labelColor String 否 呼入呼出文案字体颜色 Android
isRealPhone Boolean 否 接听手机号是否明文显示, 默认true, false时手机号中间四位**** Android
showTxtColor String 否 展示手机号字体颜色 Android
showTxtSize int 否 展示手机号字体大小 Android
pickUpColor String 否 接听 字体颜色 Android
hangUpColor String 否 挂断 字体颜色 Android

1.4 监听通话状态

callModule.openCallListener(callback);

返回值字段callState说明: 
pickup // 摘机,接听或拨出电话时触发
hangup // 待机,即无电话时,挂断时触发
ringing // 响铃,来电时触发
calling // 通话时不停回调,此状态下返回值会有time字段,代表当前通话时长

参数说明

成员名 数据类型 必填 说明 适用
callState String 是 通话状态 Android
time int 否 通话时长 Android

1.5 判断监听服务是否正在运行

let res = callModule.listeningServiceIsRuning();
返回值: Boolean  true正在运行, false未运行

1.6 移除监听

callModule.removeCallListener();

1.7 判断是否双卡, Android 5.1以上使用

let status = callModule.isMultiSim();
返回值: Boolean  true双卡; false单卡
注意: 此方法需要读取手机电话权限, 权限不允许也返回false, 另外部分手机如小米, 电话权限有"空白通行证"选项, 勾选获取不到SIM信息, 同样视为false

1.8 拨打电话

callModule.makingCalls(phone, secretPhone);
或
callModule.makingCalls(phone);

参数说明

成员名 数据类型 必填 说明 适用
phone String 是 拨打的手机号 Android
secretPhone String 否 呼叫时通话界面显示的手机号, 可对手机号进行加密, null或""显示拨打的手机号 Android

1.9 指定SIM卡拨打电话

// 单卡时, 不要使用SIM拨号, 若指定的卡槽没有卡, 将使用另一张卡拨号
let simId = 1;
callModule.makingCallsWithSim(phone, secretPhone, simId);

参数说明

成员名 数据类型 必填 说明 适用
phone String 是 拨打的手机号 Android
secretPhone String 否 呼叫时通话界面显示的手机号, 可对手机号进行加密, null或""显示拨打的手机号 Android
simId String 是 SIM卡, 只能为1或2, 1:卡1拨号, 2:卡2拨号 Android

1.10 移除通话记录

callModule.deleteCallRecords();

// 清除通话记录, 为确保调用Api时通话记录已生成, 需要添加延时操作
setTimeout(() => {
    callModule.deleteCallRecords();
}, 500);

1.11 开启所有权限

callModule.requestAllPermission();

1.12 开启录音(Android 9及以下系统可录音通话内容,Android 10及以上为普通录音)

callModule.startRecord();

1.13 关闭录音

callModule.stopRecord(callback);

成员名 数据类型 必填 说明 适用
fileName String 是 录音文件名, 与传入的录音文件路径结合使用 Android
// 示例
callModule.stopRecord(res => {
    // 录音文件路径一定是_doc格式的, CallRecords文件夹名称可以随意更改
    // this.recordPath = plus.io.convertLocalFileSystemURL("_doc/CallRecords")
    // 录音文件的完整路径
   let fullPath = this.recordPath + "/" + res.fileName;
    // 平台觉得路径转为本地相对路径
   let path = plus.io.convertAbsoluteFileSystem(fullPath);
   console.log("录音文件路径: " + path);
   uni.getFileInfo({
      filePath: path,
      success:function(){
         uni.showToast({
            title: "文件存在"
         })
      },
      fail:function(){
         uni.showToast({
            title: "文件不存在"
         })
      }     
   })
});

隐私、权限声明

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

"<uses-permission android:name=\"android.permission.CALL_PHONE\" />", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />", "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\" />", "<uses-permission android:name=\"android.permission.READ_CONTACTS\" />", "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />", "<uses-permission android:name=\"android.permission.READ_CALL_LOG\" />", "<uses-permission android:name=\"android.permission.WRITE_CALL_LOG\" />", "<uses-permission android:name=\"android.permission.WAKE_LOCK\" />", "<uses-permission android:name=\"android.permission.DISABLE_KEYGUARD\" />", "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />" 以下权限需要手动在manifest.json文件源码视图中写入 "<uses-permission android:name=\"android.permission.READ_PRECISE_PHONE_STATE\" />",

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

否

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

否