首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shouldOverrideUrlLoading在GeckoView有吗?

shouldOverrideUrlLoading在GeckoView有吗?
EN

Stack Overflow用户
提问于 2019-04-30 14:21:02
回答 1查看 978关注 0票数 3

我非常熟悉在Android WebView中使用WebView方法,并在一些项目中使用过它。我有一个新项目,需要Mozilla的GeckoView而不是标准的WebView,但我似乎找不到一种方法来覆盖urls (防止用户从最初加载的网站上跟踪某些链接)。有这样的方法存在吗?

我已经将GeckoView嵌入到我的项目中,并提供了以下说明:https://wiki.mozilla.org/Mobile/GeckoView和网站呈现得很棒。

我试图模仿的Android WebView代码如下所示:

代码语言:javascript
复制
browser.setWebViewClient(new WebViewClient() {
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Uri uri = Uri.parse(url);
    if (url.startsWith("https://www.example.com/")) {
      return false;
    }
    return true;
  }
});

在GeckoView中有类似的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 20:29:24

我想你要找的是navigationDelegate#OnLoadRequest

代码语言:javascript
复制
private fun createNavigationDelegate() = object : GeckoSession.NavigationDelegate {
    override fun onLoadRequest(session: GeckoSession, request: GeckoSession.NavigationDelegate.LoadRequest): GeckoResult<AllowOrDeny> {
        return if (request.uri.startsWith("https://www.example.com/")) {
            GeckoResult.fromValue(AllowOrDeny.DENY)
        } else {
            GeckoResult.fromValue(AllowOrDeny.ALLOW)
        }
    }
}

private fun setupGeckoView() {
    geckoView = findViewById(R.id.geckoview)
    val runtime = GeckoRuntime.create(this)
    geckoSession.open(runtime)
    geckoView.setSession(geckoSession)
    geckoSession.loadUri(INITIAL_URL)
    geckoSession.navigationDelegate = createNavigationDelegate()
}

如果您有任何其他问题,您也可以打开一个问题在他们的GitHub存储库。您可能感兴趣的另一个项目是Mozilla Android组件

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55922979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档