uni-app中uni.makePhoneCall拨打电话无效

uni-app中uni.makePhoneCall拨打电话无效

开发环境 版本号 项目创建方式
Mac 11.4 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

HBuilderX类型:正式

HBuilderX版本号:3.1.13

手机系统:全部

手机厂商:华为

页面类型:vue

打包方式:云端

测试过的手机:
- 红米k20pro尊享版安卓11
- 红米k40pro安卓11
- MAC mumu安卓模拟器
- ios模拟器

示例代码:
```javascript
 uni.makePhoneCall({  
      phoneNumber:'18888888888',//item.phone,  
      success: (res) => {  
        console.log(res);  
    })

操作步骤:

  • 执行拨打电话的api,uni.makePhoneCall,不会拉起拨打电话,直接走成功

预期结果:

  • 拉起拨打电话

实际结果:

  • 没有拉起

bug描述:

 uni.makePhoneCall({  
      phoneNumber:'18888888888',//item.phone,  
      success: (res) => {  
        console.log(res);  
    })

会直接走成功,并且不拉起拨打电话,h5可以拨打,app不行,manifest.json里面权限 也配置了 <uses-permission android:name="android.permission.CALL_PHONE"/>


更多关于uni-app中uni.makePhoneCall拨打电话无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

uni.makePhoneCall方法无问题可以直接拨打电话,有些手机可能需要权限来进行主动呼叫 还有你的代码有错误,少了一个括号 正确的代码应该是 uni.makePhoneCall({ phoneNumber: “18888888888”, //item.phone, success: (res) => { console.log(res); }, });

更多关于uni-app中uni.makePhoneCall拨打电话无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


复制漏了,已经解决了

回复 一只小欧追: 怎么解决的 求教。

回复 1***@qq.com: 加上这个权限就好了<uses-permission android:name=“android.permission.CALL_PHONE”/>

我的也是Android手机,但是加了这个也没有,确实走了成功,但是无法拨打出去,返回值也是成功的

为啥我在ios上直接走成功的回调,而且没有拉起拨打电话。在安卓都可以

而且<uses-permission android:name=“android.permission.CALL_PHONE”/>这个权限都加了,ios的还是不行

回复 cyno1: 这个权限是安卓的…

回复 zzdev: 好吧,谢谢了

在uni-app中,uni.makePhoneCall在App端调用失败通常与权限配置或运行环境有关。根据你提供的信息,云端打包已配置了CALL_PHONE权限,但问题可能出在以下方面:

  1. 权限动态申请:从Android 6.0开始,部分危险权限需在运行时动态申请。虽然makePhoneCall理论上会自动触发权限弹窗,但某些厂商定制系统(如你测试的华为、红米)可能存在兼容性问题。建议在调用前显式检查并申请权限:

    uni.authorize({
      scope: 'scope.record',
      success: () => uni.makePhoneCall({ phoneNumber: '18888888888' })
    })
    
  2. 真机调试必要性:你在MuMu模拟器和iOS模拟器测试时,可能因模拟器无实际通话功能导致行为异常。必须使用真机测试,模拟器无法完全模拟拨号流程。

  3. 云端打包配置验证:确认权限在manifest.json的App模块配置中正确勾选:

    • 打开manifest.json → App模块配置 → 勾选“电话”权限
    • 重新提交云端打包(重要:配置变更后必须重新打包)
  4. 回调逻辑补充:添加fail回调以捕获具体错误:

    uni.makePhoneCall({
      phoneNumber: '18888888888',
      success: (res) => console.log('成功', res),
      fail: (err) => console.log('失败', err)
    })
    
  5. 系统兼容性处理:部分Android 11设备对权限管理更严格,可尝试在manifest.json的Android配置中补充:

    <uses-permission android:name="android.permission.CALL_PHONE" />
回到顶部