目录

应用管理

接口声明

在manifest.json文件的 features属性中增加如下配置。

{"name": "system.package"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import pkg from '@system.package'

或

var pkg = require("@system.package")

使用限制

限制条件

说明

适用终端

手机、平板、智慧屏、车机

适用区域

全球

接口定义

接口

描述

pkg.hasInstalled(OBJECT)

检测应用是否存在。支持检测原生应用和快应用是否已安装。快应用只有在桌面有图标,才被视为已安装。

pkg.install(OBJECT)

安装原生应用,跳转到应用市场的安装详情页面,不检测应用最终是否安装成功。

pkg.getInfo(OBJECT)

获取应用版本号、版本名称信息。

pkg.getSignatureDigests(OBJECT)

获取应用签名摘要信息。

[h2]pkg.hasInstalled(OBJECT)

描述

检测应用是否存在。支持检测原生应用和快应用是否已安装。快应用只有在桌面有图标,才被视为已安装。

OBJECT参数

参数

类型

是否必填

说明

package

string

是

应用包名。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

result

boolean

应用是否存在。

示例代码

pkg.hasInstalled({
    package: 'com.hap.app',
    success: function(data) {
        console.log("handling success: " + data.result);
    },
    fail: function(data, code) {
        console.log("handling fail, code=" + code);
    }
})

[h2]pkg.install(OBJECT)

描述

安装原生应用,跳转到应用市场的安装详情页面,不检测应用最终是否安装成功。

OBJECT参数

参数

类型

是否必填

说明

package

string

是

应用包名。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

result

boolean

是否有进入到应用市场的应用安装详情界面。

示例代码

pkg.install({
    package: 'com.hap.app',
    success: function(data) {
        console.log("handling success: " + data.result);
    },
    fail: function(data, code) {
        console.log("handling fail, code=" + code);
    }
})

[h2]pkg.getInfo(OBJECT)(1070+)

描述

获取应用版本号、版本名称信息,包括原生应用和快应用。

卡片场景仅支持获取已安装的原生应用信息,不支持获取快应用信息。

OBJECT参数

参数

类型

是否必填

说明

package

string

是

应用包名。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

versionCode

number

查询包名的版本号。

versionName

string

查询包名的版本名称。

fail返回错误码

错误码

说明

202

参数错误。

1000

找不到应用。

示例代码

pkg.getInfo({
     package: 'com.sina.news',
     success: function (data) {
         console.log(`handling success: ${data.versionCode}, ${data.versionName}`)
     },
     fail: function (data, code) {
         console.log(`handling fail, code = ${code}`)
     }
})

[h2]pkg.getSignatureDigests(OBJECT)(1070+)

描述

获取应用签名摘要信息,包括原生应用和快应用。

卡片场景仅支持获取已安装的原生应用信息,不支持获取快应用信息。

OBJECT参数

参数

类型

是否必填

说明

package

string

是

应用包名。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

signatureDigests

array

使用SHA-256算法处理后的签名信息列表。

fail返回错误码

错误码

说明

202

参数错误。

1000

找不到应用。

示例代码

pkg.getSignatureDigests({
     package: 'com.sina.news',
     success: function (data) {
         data.signatureDigests.map(function (item) {
             console.log(`handling success: signatureDigests = ${item}`)
         })
     },
     fail: function (data, code) {
         console.log(`handling fail, code = ${code}`)
     }
})

Demo

<template>
  <div class="container">

    <div class="item-container">
      <text>{{hasInstalled}}</text>
      <input type="button" class="btn" onclick="pkgHasInstalled"  value="pkgHasInstalled" />
    </div>

    <div class="item-container">
      <input type="button" class="btn" onclick="pkgInstall"  value="installPkg" />
    </div>
    <div class="item-container">
      <text>{{versionInfo}}</text>
      <input type="button" class="btn" onclick="pkgGetInfo"  value="getPkgInfo" />
    </div>

    <div class="item-container">
      <text>{{signatures}}</text>
      <input type="button" class="btn" onclick="pkgGetSignatureDigests"  value="getPkgSignatureDigests" />
    </div>
  </div>
</template>

<style>
.container{
  flex: 1;
  flex-direction: column;
}
  .item-container {
    margin-top: 50px;
    margin-right: 60px;
    margin-left: 60px;
    flex-direction: column;
  }
  .btn {
  height: 80px;
  text-align: center;
  border-radius: 5px;
  margin-right: 60px;
  margin-left: 60px;
  margin-bottom: 50px;
  color: #ffffff;
  font-size: 30px;
  background-color: #0faeff;
}
</style>

<script>
  import pkg from '@system.package'
  import prompt from '@system.prompt'

  export default {
    data: {
      versionInfo: '',
      signatures: '',
      hasInstalled:''
    },
    onInit: function () {
      this.$page.setTitleBar({ text: 'package' })
    },
    pkgHasInstalled: function () {
      let that = this
      pkg.hasInstalled({
        package: 'com.huawei.appmarket',
        success: function (data) {
          console.log('handling success: ' + data.result);
          that.hasInstalled = data.result;
          prompt.showToast({
            message: 'result---' + data.result
          })
        },
        fail: function (erromsg, errocode) {
          prompt.showToast({ message: "hasInstalled fail" + errocode + ': ' + erromsg })
        },
        complete: function () {
          console.log('complete')
        }
      })
    },
    pkgInstall: function () {
      pkg.install({
        package: 'com.sina.news',
        success: function (data) {
          console.log('handling success: ' + data.result)
          prompt.showToast({
            message: 'success'
          })
        },
        fail: function (data, code) {
          console.log('handling fail, code=' + code)
          prompt.showToast({
            message: 'fail'
          })
        },
        complete: function () {
          console.log('pkg install complete')
        }
      })
    },
    pkgGetInfo: function () {
      var that = this
      pkg.getInfo({
        package: 'com.huawei.appmarket',
        success: function (ret) {
          console.log('getInfo succ data:' + JSON.stringify(ret))
          that.versionInfo = JSON.stringify(ret)
          prompt.showToast({
            message: 'succ! versionCode:' + ret.versionCode + '\n versionName:' + ret.versionName
          })
        },
        fail: function (erromsg, errocode) {
          that.versionInfo = errocode + ': ' + erromsg
          prompt.showToast({ message: "get pkginfo fail" + errocode + ': ' + erromsg })
        },
        complete: function () {
          console.log('complete')
        }
      })
    },
    pkgGetSignatureDigests: function () {
      var that = this
      pkg.getSignatureDigests({
        package: 'com.huawei.appmarket',
        success: function (ret) {
          console.log('getSignatureDigests succ data:' + JSON.stringify(ret))
          that.signatures = JSON.stringify(ret)
          prompt.showToast({
            message: 'succ!' + 'sign:\n' + ret.signatures
          })
        },
        fail: function (erromsg, errocode) {
          that.signatures = errocode + ': ' + erromsg
          prompt.showToast({ message: "GetSignatureDigests fail" + errocode + ': ' + erromsg })
        },
        complete: function () {
          console.log('complete')
        }
      })
    }
  }
</script>

效果图如下:

版本更新说明

版本

发布日期

描述

1070

2020-05-19

  • 新增getInfo方法,用于获取应用版本号、版本名称信息。
  • 新增getSignatureDigests方法,用于获取应用签名摘要信息。