我如何在 GeckoView 上使用 canGoBack()

Posted

技术标签:

【中文标题】我如何在 GeckoView 上使用 canGoBack()【英文标题】:How can i use canGoBack() on GeckoView 【发布时间】:2021-10-27 21:53:17 【问题描述】:

下面是android Webview的代码

public void onBackPressed() 
    if (webView.canGoBack()) 
        webView.goBack();
     else 
        super.onBackPressed();
    

如何在 Geckoview 中使用类似的代码,或者如何在 Geckoview 上实现类似的流程?

【问题讨论】:

【参考方案1】:

GeckoView 通过NavigationDelegate.onCanGoBack 提供这条信息但不存储它,因此您需要创建一个实现NavigationDelegate 的类来执行此操作。

首先创建你自己的委托类:

private class MyNavigationDelegate implements GeckoSession.NavigationDelegate 
    public boolean canGoBack = false;

    @Override
    public void onCanGoBack(GeckoSession session, boolean canGoBack) 
        this.canGoBack = canGoBack;
    


private MyNavigationDelegate navigationDelegate = new MyNavigationDelegate();

然后将委托设置在您创建GeckoSession 的位置:

session.setNavigationDelegate(navigationDelegate);

然后你可以像这样实现onBackPressed

public void onBackPressed() 
    if (navigationDelegate.canGoBack) 
        session.goBack();
     else 
        super.onBackPressed();
    


【讨论】:

我已编辑您的答案以修复代码错误。

以上是关于我如何在 GeckoView 上使用 canGoBack()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上将 Javascript 注入 GeckoView

Geckoview 获得麦克风权限

实施 GeckoView Web 扩展

GeckoView 中有 shouldOverrideUrlLoading 吗?

下拉菜单(选择标签、组合框)在 GeckoView 实现中不起作用

关于 Mozilla GeckoView 的 Android 问题