HarmonyOS 鸿蒙Next 使用系统侧滑返回或返回功能时,在onBackPressed中控制webview后退或加载指定内容,直接退出应用返回到桌面
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
参考这个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后退或加载指定内容,或直接退出应用返回到桌面,可以通过以下方式实现:
-
WebView后退控制: 在
onBackPressed
方法中,首先检查WebView是否可以后退。if (webView.canGoBack()) { webView.goBack(); return true; // 阻止默认返回行为 }
-
加载指定内容: 如果WebView不能后退,则加载指定内容。
webView.loadUrl("your_specified_url"); return true; // 阻止默认返回行为
-
直接退出应用: 如果以上条件都不满足,则直接退出应用。
AbilitySlice.this.finish(); // 退出当前AbilitySlice System.exit(0); // 退出应用(不推荐频繁使用,建议通过Ability管理生命周期)
注意:System.exit(0)
在HarmonyOS中通常不推荐用于常规应用退出,因为它会强制终止应用进程,可能导致资源未正确释放。更推荐使用AbilitySlice.this.finish()
来退出当前界面,并依赖系统的Ability管理机制来管理应用的生命周期。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html