简介

该示例主要是应用内安装本地rawfile下hap到设备。

开发环境

开发环境:Windows11

DevEco Studio 版本:DevEco Studio 5.1.1 Release

 

开发流程

前置步骤 

  1. 创建新工程。
  2. 添加文件service.hap到src/main/resource/rawfile目录下。
  3. 在module.json5中添加extensionablities配置

 

在serviceExtAbility.ets中新增代码

try {
  let context: common.Context = getContext(this) as common.Context;
  let hapFilePath = context.filesDir + '/com.example.service';
  let depPath = hapFilePath + '/service.hap'
  if (!fs.accessSync(hapFilePath)) {
    fs.mkdirSync(hapFilePath);
  }
  let hapData: Uint8Array = context.resourceManager.getRawFileContentSync('service.hap');
  if (!(hapData instanceof Uint8Array)) {
    console.error(tag, 'hapData 不是有效的 Uint8Array 数据');
    return;
  }
  fs.accessSync(depPath);
  let file = fs.openSync(depPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  fs.writeSync(file.fd, hapData.buffer);
  fs.closeSync(file.fd); // 关闭文件

  // 安装应用
  let bundleInstaller: installer.BundleInstaller = installer.getBundleInstallerSync();
  let installParam: installer.InstallParam = {
    userId: 100, // 用户 ID,默认为 100
    installFlag: 0 // 安装标志,默认为 0
  };

  bundleInstaller.install([depPath], installParam, (err, data) => {
    if (err) {
      console.info(tag, '安装失败:', err);
    } else {
      console.info(tag, '安装成功:', data);
    }
  });
} catch (err) {
  console.error(tag, 'HAP 文件不存在或无法访问:', err);
  return;
}

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐