uni-app 检测是否已安装微信客户端问题,已安装微信但一直返回false

uni-app 检测是否已安装微信客户端问题,已安装微信但一直返回false

产品分类:

uniapp/App

PC开发环境

操作系统 版本号
Windows win 10

手机系统

系统 版本号 厂商 机型
Android Android 11 小米 K40

其他信息

示例代码:

plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})

操作步骤:

plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})
  • APP端检测是否已安装微信,在小米k40中返回false,但实际已经安装微信。

预期结果:

plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})
  • 希望返回true

实际结果:

plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})
  • APP端检测是否已安装微信,在小米k40中返回false,但实际已经安装微信。希望尽快给个结果

bug描述:

plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})
  • 检测是否安装微信返回false,但实际已安装微信。目前出现这种情况的手机型号为小米K40,这种情况导致所有与微信相关的api都无法正常使用,包括微信登录,微信分享,微信支付

更多关于uni-app 检测是否已安装微信客户端问题,已安装微信但一直返回false的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

有没有人能回复一下?

更多关于uni-app 检测是否已安装微信客户端问题,已安装微信但一直返回false的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在Android 11及以上版本中,由于系统权限策略变更,plus.runtime.isApplicationExist 检测应用安装状态的机制可能失效。特别是小米等定制系统对应用可见性做了进一步限制。

建议改用以下方案:

  1. 使用URL Scheme检测:通过尝试启动微信的scheme并捕获异常来判断
function checkWechatInstall() {
  return new Promise((resolve) => {
    plus.runtime.openURL('weixin://', (e) => {
      resolve(true)
    }, (e) => {
      resolve(false)
    })
  })
}
  1. Android专属方案:通过查询应用列表检测(需配置权限)
// mainfest.json中配置
"android": {
  "permissions": ["QUERY_ALL_PACKAGES"]
}
// 检测代码
plus.android.requestPermissions(['android.permission.QUERY_ALL_PACKAGES'], () => {
  const packageManager = plus.android.invoke(plus.android.runtimeMainActivity(), 'getPackageManager')
  const packageInfo = plus.android.invoke(packageManager, 'getPackageInfo', 'com.tencent.mm', 0)
  console.log(!!packageInfo)
})
  1. 兼容方案:结合使用检测与异常处理
async function checkWechat() {
  const installed = await checkWechatInstall()
  if (!installed) {
    // 降级处理或提示用户手动操作
    uni.showModal({content: '未检测到微信,请确认是否安装'})
  }
  return installed
}
回到顶部