HarmonyOS 鸿蒙Next 使用系统侧滑返回或返回功能时,在onBackPressed中控制webview后退或加载指定内容,直接退出应用返回到桌面

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

HarmonyOS 鸿蒙Next 使用系统侧滑返回或返回功能时,在onBackPressed中控制webview后退或加载指定内容,直接退出应用返回到桌面
<markdown _ngcontent-wfn-c149="" class="markdownPreContainer">

我们使用webview加载haps/files下的html文件,其中signIn.html会跳转到Default.html,点击我的应用中的某个应用就加载index.html。 根据问题清单,需要实现二级模块页面,左滑或右滑,应返回至上一页。于是在MainPage.ets和EntryAbility.ets 的 onBackPressed中写入以下逻辑:

用于控制webview在用户进行侧滑返回时,调用backward()返回上一页,但只有EntryAbility.ets 的 onBackPressed可以进入断点,MainPage中的onBackPressed没有效果。 但EntryAbility.ets 的 onBackPressed进入断点后,weview没有返回上一页,而是退出应用,显示桌面;

onBackPressed官方示例: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-ability-uiability-V5#uiabilityonbackground

大家知道如何实现我这个场景吗?

</markdown>

更多关于HarmonyOS 鸿蒙Next 使用系统侧滑返回或返回功能时,在onBackPressed中控制webview后退或加载指定内容,直接退出应用返回到桌面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

参考这个demo:

import { webview } from '@kit.ArkWeb';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  build() {
    Stack() {
      Web({ src: $rawfile('index4.html'), controller: this.controller })
        .onPageEnd(() => {
          console.log("加载第一个web组件")
        })
        .javaScriptAccess(true)
        .domStorageAccess(true)
    }
  }

onBackPress() { try { if (this.controller.accessBackward()) { this.controller.backward() return true } } catch (error) { console.error(ErrorCode: ${error?.code}, Message: ${error?.message}); } return false } }

h5: <!-- index.html --> <!DOCTYPE html> <html> <meta name=“viewport” content=“width=device-width, initial-scale=1.0” /> <title>Document</title> <script src=https://lib.baomitu.com/vConsole/3.15.0/vconsole.min.js></script> <script> window.vConsole = new window.VConsole() </script> <body> Hello world! <a href=https://www.baidu.com>打开百度</a> <a href="/index.html">打开其他页面</a> </body> <script> </script> </html> <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next 使用系统侧滑返回或返回功能时,在onBackPressed中控制webview后退或加载指定内容,直接退出应用返回到桌面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若要在系统侧滑返回或返回功能触发onBackPressed时控制WebView后退或加载指定内容,或直接退出应用返回到桌面,可以通过以下方式实现:

  1. WebView后退控制: 在onBackPressed方法中,首先检查WebView是否可以后退。

    if (webView.canGoBack()) {
        webView.goBack();
        return true; // 阻止默认返回行为
    }
    
  2. 加载指定内容: 如果WebView不能后退,则加载指定内容。

    webView.loadUrl("your_specified_url");
    return true; // 阻止默认返回行为
    
  3. 直接退出应用: 如果以上条件都不满足,则直接退出应用。

    AbilitySlice.this.finish(); // 退出当前AbilitySlice
    System.exit(0); // 退出应用(不推荐频繁使用,建议通过Ability管理生命周期)
    

注意System.exit(0)在HarmonyOS中通常不推荐用于常规应用退出,因为它会强制终止应用进程,可能导致资源未正确释放。更推荐使用AbilitySlice.this.finish()来退出当前界面,并依赖系统的Ability管理机制来管理应用的生命周期。

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

回到顶部