【快应用】一个for循环,教你实现批量包名检测功能

 【关键词】

包名检测,for循环

 

【问题背景】

快应用中调用pkg.hasInstalled检测应用是否已安装时,填入一个包名时,是可以正确返回结果,当输入的包名参数是一个数组时就只返回第一个包名的检测结果,之后的就不再返回结果了。这种情形该如何处理?

cke_6530.png

 

【问题分析】

这是因为该接口的package参数为string类型,当填写为数组时,会把整个数组判断为一个包名去检测,导致返回的都是false,所以看起来只有一个结果。

 

【解决方案】

可以用for循环去遍历数组,来去对包名一个一个检测,这样就可以对每个包名实现检测的。

代码:

<script>
  import pkg from '@system.package';
  import prompt from '@system.prompt'
  export default {
    data: {
      packageName: ["com.dianzhong.mfxsdq01", 'com.zhangdu.shucheng', 'com.bishangread.quickapp', 'com.dianzhong.kkxs', 'com.dianzhong.rmxsdq',
        'com.novel.quick', 'com.kaijuanxiaoshuo.Fastapplication', 'com.qidian.wxcp.moxiang', 'com.dianzhong.dzyd01', 'com.dianzhong.xgmfxs',
        'com.fastapp.bimo', 'cn.ledu6.quick', 'com.yuyue.eryue', 'com.zdks.quickapp', 'com.haizhuishu.quickapp', 'com.haizhuishu.quickapp',
        'com.dianzhong.xsydb', 'com.pandareader.quickapp', 'com.dangdang.quickapp', 'com.dianzhong.mfxsqj01', 'com.huawei.anli'
      ]
    },
    onShow(options) {
      for (var i = 0; i < this.packageName.length; i++) {
        pkg.hasInstalled({
          package: this.packageName[i],
          success: function (data) {
            console.log("handling success: " + data.result);
          },
          fail: function (data, code) {
            console.log("handling fail, code=" + code);
          }
        })
      }
    }, 
  }
</script>

截图:

cke_5307.png

 

 

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

posted @ 2023-05-06 10:10  华为开发者论坛  阅读(44)  评论(0编辑  收藏  举报