防止关闭InAppBrowser - Cordova

时间:2015-03-22 10:58:57

标签: android cordova inappbrowser

我有一个简单的应用程序,onDeviceReady启动InAppBrowser并显示一个网站。然后,当特定事件发生时,InappBrowser将关闭。

如您所知,在Android平台上按“后退按钮”会关闭我想要阻止的InAppBrowser。我想向用户显示InAppBrowser,直到该事件发生并且用户无法关闭InAppBrowser。

请注意,我不是在谈论hardwareback选项。 hardwareback是一个有用的选项,它允许用户通过按“后退按钮”返回他/她的导航历史记录,但在第一页(当历史记录中没有任何内容时),它关闭InAppBrowser而我希望InAppBrowser仍然仍然开放。

3 个答案:

答案 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窗口。