HarmonyOS 鸿蒙Next:arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代
HarmonyOS 鸿蒙Next:arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代
//Index.ets import common from '@ohos.app.ability.common'; import web_webview from '@ohos.web.webview'; import process from '@ohos.process';
@Entry @Component struct Index { controller: TextInputController = new TextInputController(); webviewController: web_webview.WebviewController = new web_webview.WebviewController();
aboutToAppear() { // 配置Web开启调试模式 web_webview.WebviewController.setWebDebuggingAccess(true); }
build() { Row() { Column() { //h5跳转 Web({ src: $rawfile(‘index.html’), controller: this.webviewController }) .onControllerAttached(() => { // 传递runJavaScript侧代码方法。 this.webviewController.registerJavaScriptProxy(new JSImpl(), ‘harmonyOS’, [‘exitApp’]) this.webviewController.refresh(); }) .onConsole((event) => { if (event) { console.log(‘getMessage:’ + event.message.getMessage()) } return false }) }.width(‘100%’) }.height(‘100%’) } }
class JSImpl { /**
- JS调用端侧方法
- 退出app */ exitApp() { console.log(‘关闭应用’) // 使用exit(code: number): void 终止程序 // const pro = new process.ProcessManager(); // pro.exit(0);
<span class="hljs-comment">//使用UIAbilityContext.terminateSelf退出应用</span> <span class="hljs-keyword">const</span> context = getContext(<span class="hljs-keyword">this</span>) as common.UIAbilityContext; context.terminateSelf();
} }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
<!–index.html–>
<!DOCTYPE html>
<html lang=“en”>
<head>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
<title>Test</title>
</head>
<body>
<div>
<button type=“button” onclick=“callArkTS()”>点击退出app</button>
<script>
// 点击触发前端页面callArkTS()函数执行JavaScript传递的代码。
function callArkTS() {
const exitApp = window.harmonyOS.exitApp();
exitApp();
}
</script>
</div>
</body>
</html>
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
参考文档: 前端页面调用应用侧函数: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-in-page-app-function-invoking-V5 使用UIAbilityContext.terminateSelf退出当前应用: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-inner-application-uiextensioncontext-V13#uiextensioncontextterminateself12 使用exit终止程序: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-process-V13#exit9
更多关于HarmonyOS 鸿蒙Next:arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next中arkweb上的H5调用navigator.app.exitApp()
方法无效的问题,目前鸿蒙系统并未提供直接的API替代该方法以实现应用退出功能。
在鸿蒙系统中,arkweb主要用于嵌入和显示Web页面内容,它并不完全支持所有Web标准API,特别是那些涉及到应用级操作(如退出应用)的API。因此,navigator.app.exitApp()
这类方法在arkweb环境中可能无法正常工作。
为了处理这个问题,开发者可以考虑通过其他方式实现应用退出功能,例如使用鸿蒙系统提供的原生开发接口(如ETS或Java)来编写退出逻辑,并通过某种形式的Native与H5交互机制(如JavaScript接口调用)来触发这些逻辑。
请注意,这种方法可能需要开发者具备一定的鸿蒙系统原生开发经验和知识。如果尝试上述方法后问题依旧无法解决,建议联系鸿蒙系统官方客服获取进一步的支持。官网地址是:https://www.itying.com/category-93-b0.html。