鸿蒙开发 如何判断手机是否有安装指定的app

237 阅读1分钟

场景

在鸿蒙系统的手机上想通过判断代码判断用户手机上是否安装了某个app,如果有安装就展示对应的业务逻辑,如果没有安装就忽略。

现状

目前鸿蒙开发中,很多第三方sdk 并没有提供这样的api 给到开发者使用,例如去对比下sina的 鸿蒙sdk与iOS/Android的sdk,你就会发现少了一个isInstall的api。

解决办法

前两天刚好看见鸿蒙的opensdk的有更新一个版本 1.0.4(ohpm.openharmony.cn/#/cn/detail…) 仅新增了一个方法:isWXAppInstalled,于是更新了sdk去查看了下这个api的实现得到了答案。

/// 微信sdk鸿蒙版源码
isWXAppInstalled(): boolean {
 try {
   return bundleManager.canOpenLink("weixin://")
 } catch (e) {
   let code = (e as BusinessError)?.code
   let msg = (e as BusinessError)?.message ?? ''
   if (code !== undefined) {
     if (code === 17700056) {
       msg += ` Please include "weixin" inside the "querySchemes" element of module.json5 in your app module.`
     }
     Log.e(kTag, `isWXAppInstalled get error ${msg}`)
   } else {
     Log.e(kTag, `isWXAppInstalled get error ${e}`)
   }
   return false
 }
}

注意事项

仅仅实现上述代码还是无法判断的,还需要在module.json5的querySchemes增加配置如下: 根据自己的需求写入对应的scheme即可

"querySchemes": [
  "weixin", /// 微信的scheme
  "alipays",/// 支付宝的scheme
  "sinaweibo" ///新浪微博的scheme
]