应用内安装rawfile文件下hap
·
简介
该示例主要是应用内安装本地rawfile下hap到设备。
开发环境
开发环境:Windows11
DevEco Studio 版本:DevEco Studio 5.1.1 Release
开发流程
前置步骤
- 创建新工程。
- 添加文件service.hap到src/main/resource/rawfile目录下。
- 在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;
}
更多推荐
所有评论(0)