GeckoView 中有 shouldOverrideUrlLoading 吗?
Is there a shouldOverrideUrlLoading in GeckoView?
我非常熟悉在AndroidWebView中使用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有没有类似的方法?
我想你要找的是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 repository. Another project that you may be interested in is Mozilla Android Components 上提出问题。
我非常熟悉在AndroidWebView中使用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有没有类似的方法?
我想你要找的是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 repository. Another project that you may be interested in is Mozilla Android Components 上提出问题。