更新记录

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. 如有使用上的疑问、bug或者要求定制插件,可以QQ(192227519)联系作者;
  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. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问