HarmonyOS 鸿蒙Next 三方har包引入问题

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 三方har包引入问题

目前集成了一个三方OCR的sdk,是通过新创建一个UIAbility来进行数据的传输和回调,经三方sdk公司确认说:需要的har目前官方不支持@Entry模式的ability,所以只能使用新建UIAbility来设计。

这种设计就会导致类似于小程序的设计模式,在主window下又创建一个子wondow的窗口,导致下滑到进程的时候也会显示2个APP窗口,请协助帮忙分析一下,主要函数为:

windowStage.loadContent('pages/ocr/bank_scan_page', storage, (err, data) => {
  if (err.code) {
    hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
    return;
  }
  hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});

// 扫描组件 BankScanPage({ isDirectionMode : this.scanMode, isPreviewMode: this.isPreview, results: this.results, resultCallBack: () => { console.error(“SDK_IdcardPage-resultCallBack”) // 打印结果 console.error(“SDK”, this.results.get(“bankNum”)); // 回调结果 let resultArray: Array<string> = new Array(); for (let i = 0; i < BankKeyData.BANK_KEYS.length; i++) { let result = this.results.get(BankKeyData.BANK_KEYS[i]); resultArray[i] = result == null ? “” : result; } let context = getContext(this) as common.UIAbilityContext; let abilityResult: common.AbilityResult = { resultCode: 1001, want: { bundleName: context.abilityInfo.bundleName, moduleName: ‘’, // moduleName非必选 abilityName: ‘EntryAbility’, parameters: { info: resultArray }, }, }; context.terminateSelfWithResult(abilityResult, (err) => { if (err.code) { console.error(TAG, Failed to terminate self with result. Code is ${err.code}, message is ${err.message}); return; } }); } });

BANK_start(isPreview: boolean,callBack: (isSuccess: boolean, dataDic:Array<string>) => void) { // 启动ability , want为携带参数 let want: Want = { deviceId: ‘’, // deviceId为空表示本设备 bundleName: context.abilityInfo.bundleName, moduleName: ‘’, // moduleName非必选 abilityName: ‘BankScanAbility’, parameters: { // 相机类型: 视频流/拍照 type: isPreview, scanMode: false, }, } context = getContext(this) as common.UIAbilityContext; // UIAbilityContext // context为调用方UIAbility的UIAbilityContext context.startAbilityForResult(want).then((data) => { let resultArray: Array<string> = new Array(); resultArray = data.want?.parameters?.info as Array<string>; if (resultArray) { // 跳转结果展示 callBack(true,resultArray) YTLog.debug(Tag, “扫描结果:” + resultArray) } else { callBack(false,new Array()) } }).catch((err: BusinessError) => { callBack(false,new Array()) console.error(Failed to ForResult ability. Code is ${err.code}, message is ${err.message}); }) }


更多关于HarmonyOS 鸿蒙Next 三方har包引入问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

导致下滑到进程的时候也会显示2个APP窗口,两个ability就是这样的,相当于两个进程

更多关于HarmonyOS 鸿蒙Next 三方har包引入问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对“HarmonyOS 鸿蒙Next 三方har包引入问题”,以下是专业且简洁的回答:

在HarmonyOS鸿蒙Next系统中引入第三方har包时,需确保har包与鸿蒙系统的兼容性。具体步骤如下:

  1. 下载并解压har包:从可靠来源下载所需的三方har包,并解压到本地目录。

  2. 配置build.gradle:在项目的build.gradle文件中,添加har包的依赖路径。这通常涉及指定har包的本地路径或远程仓库地址。

  3. 同步项目:完成依赖配置后,同步项目以确保har包被正确识别并引入。

  4. 检查依赖冲突:若项目中已存在与har包中的类、接口或资源冲突,需进行相应处理,如修改包名、类或资源名称。

  5. 编译并运行:在确保无依赖冲突后,编译项目并运行,以验证har包是否成功引入并正常工作。

如遇到具体错误或问题,请检查har包版本与鸿蒙系统版本的兼容性,以及build.gradle文件中的配置是否正确。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部