🛠️ uni-app 权限问题解决方案:HBuilderX 电话权限弹窗终极处理指南

353 阅读2分钟

image.png

🔧 环境配置详情

工具 / 设备版本 / 型号状态说明
HBuilderX4.66最新稳定版
模拟器雷电 9每次重启触发权限弹窗
测试手机荣耀(鸿蒙 2 兼容安卓)每次重启触发权限弹窗

🚦 问题现象描述

  • 模拟器出现问题:雷电 9 模拟器每次重启必现 "允许 HBuilder 拨打电话" 弹窗
  • 权限冲突表现:用户未在代码中调用电话功能,属于框架隐含权限请求
  • 拒绝后果:权限拒绝后应用自动关闭,影响开发调试流程

📜 官方解决方案索引

  1. DCloud 官方权限问题解答
    ⚠️ 重点关注 "应用启动权限申请策略" 章节
  2. 应用上架权限规范指南
    ✅ 建议通读 "权限申请时机" 部分

📝 manifest.json 配置实操

"app-plus" : {
        "checkPermissionDenied" : true,
         ...
         /* 应用发布信息 */
        "distribute" : {
            /* android打包配置 */
            "android" : {
                "permissions" : [
                    "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
                    "<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGEE\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                ],
                "permissionPhoneState" : {
                    "request" : "none",
                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
                },
                "permissionExternalStorage" : {
                    "request" : "none",
                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
                },
                "excludePermissions" : [
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"
                ]
            },
            /* ios打包配置 */
            "ios" : {
                "dSYMs" : false
            },
            /* SDK配置 */
            "sdkConfigs" : {}
        }
}

🚫 强制移除的敏感权限

  • ❌ 通讯录相关权限已通过excludePermissions节点移除
  • 配置效果如图所示:

image.png

⚠️ 重要版本说明

  • HX3.5.5 + 版本特性
    🔹 系统默认权限申请策略调整为request: none
    🔹 需手动确认 manifest.json 中两项关键配置:
"permissionPhoneState": { "request": "none" },
"permissionExternalStorage": { "request": "none" }

✅ 最终验证结果

测试环境未打包状态打包后状态
雷电 9 模拟器❌ 持续弹出权限弹窗✅ 弹窗消失
荣耀真机(鸿蒙)——(未测试未打包)✅ 权限请求消失

📚 延伸阅读