我有一个简单的应用程序,onDeviceReady
启动InAppBrowser并显示一个网站。然后,当特定事件发生时,InappBrowser将关闭。
如您所知,在Android平台上按“后退按钮”会关闭我想要阻止的InAppBrowser。我想向用户显示InAppBrowser,直到该事件发生并且用户无法关闭InAppBrowser。
请注意,我不是在谈论hardwareback
选项。 hardwareback
是一个有用的选项,它允许用户通过按“后退按钮”返回他/她的导航历史记录,但在第一页(当历史记录中没有任何内容时),它关闭InAppBrowser而我希望InAppBrowser仍然仍然开放。
答案 0 :(得分:1)
在最新的InAppBrowser版本中,您仍然必须在onBackPressed
插件代码的JAVA代码中更改InAppBrowserDialog.java
函数:
public void onBackPressed () {
if (this.inAppBrowser == null) {
this.dismiss();
} else {
// better to go through the in inAppBrowser
// because it does a clean up
if (this.inAppBrowser.hardwareBack() && this.inAppBrowser.canGoBack()) {
this.inAppBrowser.goBack();
} else {
// this.inAppBrowser.closeDialog();
}
}
}
我不喜欢这种方法,我已经在GitHub上询问了一个功能;您可以在GitHub上关注它:https://github.com/apache/cordova-plugin-inappbrowser/issues/530
答案 1 :(得分:0)
我意识到这个问题相当陈旧,但在我自己寻找答案时偶然发现了它。
您可以编辑InAppBrowserDialog.java文件(插件> cordova-plugin-inappbrowser> src> android),以便在按下后按钮时更改后退按钮的行为。
this.inAppBrowser.closeDialog()
在onBackPressed()方法中注释掉上面的代码,这将阻止浏览器在硬件上关闭,同时仍然保持导航功能。
答案 2 :(得分:0)
实际上,没有解决方案可以防止按下硬件后退按钮时关闭浏览器。您唯一可以做的就是在最少500ms的延迟后再次在浏览器中重新加载相同的URL。延迟很重要,否则,将不会显示inappbrowser窗口。