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
复制漏了,已经解决了
回复 一只小欧追: 怎么解决的 求教。
回复 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权限,但问题可能出在以下方面:
-
权限动态申请:从Android 6.0开始,部分危险权限需在运行时动态申请。虽然
makePhoneCall理论上会自动触发权限弹窗,但某些厂商定制系统(如你测试的华为、红米)可能存在兼容性问题。建议在调用前显式检查并申请权限:uni.authorize({ scope: 'scope.record', success: () => uni.makePhoneCall({ phoneNumber: '18888888888' }) }) -
真机调试必要性:你在MuMu模拟器和iOS模拟器测试时,可能因模拟器无实际通话功能导致行为异常。必须使用真机测试,模拟器无法完全模拟拨号流程。
-
云端打包配置验证:确认权限在manifest.json的App模块配置中正确勾选:
- 打开manifest.json → App模块配置 → 勾选“电话”权限
- 重新提交云端打包(重要:配置变更后必须重新打包)
-
回调逻辑补充:添加fail回调以捕获具体错误:
uni.makePhoneCall({ phoneNumber: '18888888888', success: (res) => console.log('成功', res), fail: (err) => console.log('失败', err) }) -
系统兼容性处理:部分Android 11设备对权限管理更严格,可尝试在manifest.json的Android配置中补充:
<uses-permission android:name="android.permission.CALL_PHONE" />


