为了账号安全,请及时绑定邮箱和手机立即绑定

GeckoView 中有 shouldOverrideUrlLoading 吗?

GeckoView 中有 shouldOverrideUrlLoading 吗?

呼啦一阵风 2022-11-02 10:30:09
我对在 Android WebView 中使用 shouldOverrideUrlLoading 方法非常熟悉,并且在一些项目中使用过它。我有一个需要 Mozilla 的 GeckoView 而不是标准 WebView 的新项目,但我似乎找不到覆盖 url 的方法(以防止用户从最初加载的网站中跟踪某些链接)。有没有这样的方法存在?我已经使用以下说明将 GeckoView 嵌入到我的项目中:https ://wiki.mozilla.org/Mobile/GeckoView并且网站渲染得很好。我试图模拟的 Android WebView 代码如下所示: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 中是否有类似的方法?
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我认为您正在寻找的是在navigationDelegate#OnLoadRequest

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 Components。


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信