HarmonyOS 鸿蒙Next:arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代

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

HarmonyOS 鸿蒙Next:arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代

arkweb上的H5调用navigator.app.exitApp()方法无效,鸿蒙是否有API替代

2 回复
navigator.app.exitApp 没有适配鸿蒙,可以使用前端页面调用鸿蒙原生接口的方法实现退出应用。demo如下:
//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

回到顶部