HarmonyOS鸿蒙Next中为什么customizeSchemes会失败
HarmonyOS鸿蒙Next中为什么customizeSchemes会失败
在aboutToAppear中调用customizeSchemes时抛出Failed to register custom schemes:
aboutToAppear() {
web_webview.WebviewController.customizeSchemes([{
schemeName: 'hbfont',
isSupportFetch: true,
isSupportCORS: true,
}])
}
Error message:Failed to register custom schemes.
Error code:17100020
Stacktrace:
at aboutToAppear (ohos/src/main/ets/components/plugin/webview/in_app_webview/OhosWebView.ets:66:5)
at buildWithNestingBuilder (../../../foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:203:1)
at build (../../../foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:212:1)
at build (../../../foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:70:1)
at makeNode (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/ohos/EmbeddingNodeController.ets:58:7)
at __makeNode__ (../../../foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:710:1)
at anonymous (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/view/DynamicView/dynamicView.ets:253:5)
at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6813:1)
at observeComponentCreation2 (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6840:1)
at buildNodeContainer (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/view/DynamicView/dynamicView.ets:252:21)
at anonymous (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/view/DynamicView/dynamicView.ets:282:7)
at ifElseBranchUpdateFunction (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4300:1)
at anonymous (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/view/DynamicView/dynamicView.ets:281:56)
at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6813:1)
at observeComponentCreation2 (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6840:1)
at initialRender (oh_modules/.ohpm/@ohos+flutter_ohos@n0mf9e7azksqb+fwiimvqz+w1mlb1i+vphyco6m4h7s=/oh_modules/@ohos/flutter_ohos/src/main/ets/view/DynamicView/dynamicView.ets:268:3)
at initialRenderView (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6492:1)
at (entry/src/main/ets/pages/Index.ets:30:7)
更多关于HarmonyOS鸿蒙Next中为什么customizeSchemes会失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
试了没有复现问题
import { webview as web_webview } from '@kit.ArkWeb'
@Component
struct Index {
private webViewController: web_webview.WebviewController = new web_webview.WebviewController()
responseWeb: WebResourceResponse = new WebResourceResponse();
aboutToAppear() {
web_webview.WebviewController.customizeSchemes([{
schemeName: 'hbfont',
isSupportFetch: true,
isSupportCORS: true}
])
}
build() {
Column() {
Web({ src: '', controller: this.webViewController })
.onInterceptRequest((event) => {
if (event) {
console.log('url:' + event.request.getRequestUrl());
}
return this.responseWeb;
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS鸿蒙Next中为什么customizeSchemes会失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,customizeSchemes
失败通常由以下原因导致:
- 配置文件中scheme名称重复或格式错误
- ability的
exported
属性未设置为true - 设备类型过滤配置不当
- 目标ability未在
manifest.json
中正确声明
检查要点:
- scheme名称必须唯一且符合格式规范(字母开头,仅含字母数字和
.
) - 确保目标ability的
skills
配置包含对应的scheme - 验证
deviceType
是否匹配运行环境
在HarmonyOS Next中,customizeSchemes
调用失败通常有几个常见原因:
-
注册时机问题:
customizeSchemes
必须在WebviewController
实例创建之前调用。在aboutToAppear
中调用可能已经太晚,建议在应用启动时或页面初始化阶段更早调用。 -
参数格式错误:您的代码示例中缺少右花括号,正确的格式应该是:
web_webview.WebviewController.customizeSchemes([{ schemeName: 'hbfont', isSupportFetch: true, isSupportCORS: true }])
-
重复注册:同一个
schemeName
只能注册一次,重复注册会导致失败。 -
权限问题:确保在
config.json
中声明了必要的网络权限:"reqPermissions": [ { "name": "ohos.permission.INTERNET" } ]
-
schemeName
格式:schemeName
必须符合URL scheme规范,建议使用小写字母且不包含特殊字符。
建议检查以上几点,特别是代码中的语法错误和调用时机问题。错误码17100020通常表示参数无效或注册时机不正确。