3***@qq.com
3***@qq.com
  • 发布:2026-06-03 16:51
  • 更新:2026-06-03 16:52
  • 阅读:66

【报Bug】uni.makePhoneCall在打包为uni小程序 SDK在安卓系统无法使用

分类:uni小程序sdk

产品分类: uni小程序SDK

手机系统: Android

手机系统版本号: Android 16

手机厂商: 小米

手机机型: redmiK70

页面类型: vue

SDK版本号: 5.07

示例代码:

uni.makePhoneCall({
phoneNumber: '114' //仅为示例
});

操作步骤:

uni.makePhoneCall({
phoneNumber: '114' //仅为示例
});

预期结果:

拉起手机拨号功能

实际结果:

没反应

bug描述:

uni.makePhoneCall在打包为uni小程序 SDK在安卓系统无法使用。ios系统可以用

2026-06-03 16:51 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

好的,我们来从DCloud官方人员的视角,对这个bug反馈进行评审。


Bug反馈评审

反馈ID: 社区问题 141270 的同类问题
反馈标题: uni.makePhoneCall在打包为uni小程序 SDK在安卓系统无法使用

一、 内容完整性及质量评估

这份反馈描述了核心问题,但关键信息缺失,导致无法直接定位和复现,需要用户补充

  1. BUG描述: 描述“打包为uni小程序 SDK在安卓系统无法使用”比较清晰,点明了问题的特定场景(uni小程序SDK)和平台(Android)。但缺少一个非常重要的对比信息:这个uni小程序的源码,在直接运行或打包为独立App时,uni.makePhoneCall 是否能正常工作? 这个信息对于判断问题是出在SDK集成层还是小程序代码本身至关重要。
  2. 代码示例: 提供的代码示例 uni.makePhoneCall({ phoneNumber: '114' }); 本身是正确的,能够直接运行。但是,在uni小程序SDK的场景下,宿主App中是否配置了必要的Android权限是问题的关键,而代码示例中没有体现出这一点。
  3. 复现步骤: 复现步骤仅仅是粘贴了一遍代码示例,没有描述操作流程。官方人员无法根据“uni.makePhoneCall({...})”这个步骤复现问题。需要补充完整的复现步骤,例如:
    • 宿主App是否重新打包并集成了小程序SDK?
    • 宿主App的 AndroidManifest.xml 中是否添加了 android.permission.CALL_PHONE 权限?
    • 点击按钮后,是没有任何反应,还是控制台有报错信息?
  4. 预期结果: “拉起手机拨号功能”是合理的预期。
  5. 实际结果: “没反应”的描述过于模糊。是点击后无任何响应?还是弹出了权限申请但申请后没反应?还是控制台输出了错误日志?需要提供更具体的表现或日志。
  6. 分类信息: 缺少了关键的SDK版本号HBuilderX版本号。不同版本的宿主SDK和小程序SDK兼容性可能不同,这些信息对排查问题至关重要。

二、 Bug是否成立的分析

此Bug很可能成立,但根因在于宿主App的配置问题,而非uni.makePhoneCall API本身存在缺陷。

依据来源于知识库和社区历史问题

  1. 权限配置是关键: 根据uni-app文档 phone > uni.makePhoneCall(OBJECT) 知识项中明确指出:“Android需要在 manifest.json 增加权限 <uses-permission android:name="android.permission.CALL_PHONE"/>”。当使用uni小程序SDK时,这个权限需要在宿主原生App的AndroidManifest.xml文件中声明,而不是在小程序的manifest.json里。这是最常见的问题原因。
  2. ISSUE 系统历史佐证: 在ask社区中,存在多个完全一致的反馈:
    • 问题 141270 直接描述了“uni小程序,Android拨打电话无效”的问题。
    • 问题 135552 中,官方人员 DCloud_Android_ST 也直接回复提示需要“添加这个权限”。
    • 问题 141008 中的用户 White007 也确认:“可以了,增加了call_phone权限要重新打包安卓自定义基座才可以”。这进一步证实了对于非标准基座打包的App(包括SDK宿主App),重新配置并打包是关键步骤。

结论:该问题并非uni.makePhoneCall API的通用Bug,而是uni小程序SDK集成过程中,宿主App未正确配置CALL_PHONE权限所致。这个反馈属于配置和使用问题。

三、 基本概念判断

此问题不涉及uni-app x、鸿蒙或Vue版本等概念混淆,是一个典型的uni-app App端原生权限在SDK宿主App中集成的问题。


处理建议

感谢您的反馈。根据您描述的现象,uni.makePhoneCall 在uni小程序SDK的安卓宿主环境下无响应,通常是由于宿主原生App缺少拨打电话的权限导致的。

uni.makePhoneCall API要求App拥有 android.permission.CALL_PHONE 权限。当小程序作为独立App运行时,此权限由打包工具自动处理;但当它作为SDK集成到您的原生App中时,这个权限必须由宿主App在其 AndroidManifest.xml 文件中手动添加

请按以下步骤排查:

  1. 打开您的宿主原生Android项目
  2. 找到 src/main/AndroidManifest.xml 文件。
  3. <manifest> 节点内,添加以下权限声明:
    <uses-permission android:name="android.permission.CALL_PHONE"/>  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  4. 重新编译并打包宿主App。
  5. 在较新版本的Android系统上,您可能还需要在调用 makePhoneCall 前,使用 uni.authorize 或原生代码动态申请 Manifest.permission.CALL_PHONE 权限。

为了更准确地定位问题,还请您补充以下信息:

  • 您使用的 HBuilderX 版本uni小程序SDK版本
  • 确认一下,将当前这个小程序的源码直接打包成一个独立的标准App,在您的红米K70上是否可以正常拨打电话?这能帮助我们进一步缩小问题范围。
内容为 AI 生成,仅供参考

要回复问题请先登录注册