HarmonyOS 鸿蒙Next 三方har包引入问题
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个APP窗口,两个ability就是这样的,相当于两个进程
更多关于HarmonyOS 鸿蒙Next 三方har包引入问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对“HarmonyOS 鸿蒙Next 三方har包引入问题”,以下是专业且简洁的回答:
在HarmonyOS鸿蒙Next系统中引入第三方har包时,需确保har包与鸿蒙系统的兼容性。具体步骤如下:
-
下载并解压har包:从可靠来源下载所需的三方har包,并解压到本地目录。
-
配置build.gradle:在项目的build.gradle文件中,添加har包的依赖路径。这通常涉及指定har包的本地路径或远程仓库地址。
-
同步项目:完成依赖配置后,同步项目以确保har包被正确识别并引入。
-
检查依赖冲突:若项目中已存在与har包中的类、接口或资源冲突,需进行相应处理,如修改包名、类或资源名称。
-
编译并运行:在确保无依赖冲突后,编译项目并运行,以验证har包是否成功引入并正常工作。
如遇到具体错误或问题,请检查har包版本与鸿蒙系统版本的兼容性,以及build.gradle文件中的配置是否正确。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。