1***@qq.com
1***@qq.com
  • 发布:2026-07-08 16:31
  • 更新:2026-07-08 16:59
  • 阅读:50

uni.getProvider 获取不到正确的 isWeChatInstalled值

分类:鸿蒙Next

鸿蒙设备上 uni.getProvider 获取到的 isWeChatInstalled 一直是false。

但是真机上是安装了微信的

{
"id": "weixin",
"description": "微信登录",
"isWeChatInstalled": false,
"authResultText": {},
"APP_ID": "",
"APP_SECRET": "",
"WXEventHandler": {
"onReqCallbacks": {},
"onRespCallbacks": {}
},
"WXApi": {
"resolves": {},
"appId": ""
}
}

2026-07-08 16:31 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

ai回复的没有用,配置我都加了,也检查了

Ask小助手

Ask小助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据知识库和对话历史,鸿蒙设备上 uni.getProvider 获取到的 isWeChatInstalled 一直为 false 是一个已知问题,通常与配置和集成方式有关。

根本原因

uni.getProvider 在 app 平台获取可用服务商的逻辑,与打包时配置的模块和 sdk 信息直接相关,而不是单纯检测手机是否安装了微信客户端。在鸿蒙平台上,这需要同时满足以下条件:

  1. manifest.json 配置正确:必须在 app-harmonymodules 中正确配置 uni-oauthweixin 节点,并填写 appid
  2. 集成方式正确:如果你是将 uniapp 代码打包成 wgt 资源,再集成到鸿蒙原生工程,需要确保微信相关的原生库(.har)已被正确引入和注册。

解决方案

请按以下步骤排查和修复:

1. 检查 manifest.json 配置

manifest.json 的源码视图中,确认 app-harmony 节点下是否完整配置了微信登录模块。不能是空对象,必须包含 appid。一个典型的配置示例如下:

"app-harmony": {  
    "distribute": {  
        "modules": {  
            "uni-oauth": {  
                "weixin": {  
                    "appid": "你的微信开放平台appid" // 这里必须填写  
                }  
            }  
        }  
    }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
来自对话知识库的反馈:配置空节点 "weixin": {} 会导致 getProvider 返回空数组。

2. 检查 querySchemes 配置

鸿蒙平台需要声明允许查询的 scheme,否则无法检测到微信是否安装。你需要在鸿蒙原生工程的 module.json5 文件中添加 querySchemes 配置。

在项目根目录的 harmony-configs/entry/src/main/module.json5 文件中,确保 querySchemes 数组包含 "weixin"

注意:根据微信官方文档和对话知识库,请勿配置 wxopensdk。配置 wxopensdk 后可能导致微信登录无法回调。

一个完整的 module.json5 配置参考:

{  
    "module": {  
        "name": "entry",  
        "type": "entry",  
        "querySchemes": [  
            "weixin"  
            // 注意:不要添加 "wxopensdk"  
        ],  
        "abilities": [  
            {  
                "skills": [  
                    {  
                        "actions": [  
                            "action.system.home",  
                            "wxentity.action.open"  
                        ]  
                    }  
                ]  
            }  
        ]  
    }  
}

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

3. 检查原生工程集成(仅限离线打包或 wgt 集成)

如果你是将 uniapp 代码打包成 wgt 资源,然后集成到鸿蒙原生工程中,需要确认微信支付或登录的原生库(.har)已正确集成。

根据对话知识库和官方文档 HarmonyOS平台接入微信登录 的指引,你需要:

  • 从 hbuilderx 生成的离线资源包中找到对应的微信 har 包。
  • 将其放入鸿蒙原生工程的 libs 目录。
  • oh-package.json5 中添加依赖并同步。
  • index.generated.ets 等入口文件中正确注册 provider。

4. 使用自定义基座调试

标准运行基座使用的是 dcloud 的默认配置,无法用于测试第三方 sdk 功能。请务必打“自定义调试基座”或正式打包进行测试。

总结

isWeChatInstalled 返回 false 通常不是由单一原因引起的。请按以下顺序检查:

  1. manifest.jsonapp-harmony 节点是否填写了正确的 appid
  2. module.json5querySchemes 是否包含 "weixin"(且不包含 "wxopensdk")。
  3. 是否使用了自定义基座进行调试。
  4. 如果是 wgt 集成模式,检查原生 .har 库的引入和注册步骤。

如果以上步骤都确认无误后问题依旧,建议提供一个可复现的工程到 ask 社区发帖,并附上相关配置截图和操作步骤,以便 dcloud 官方人员进一步协助定位。

内容为 AI 生成,仅供参考

要回复问题请先登录注册