gpt4 book ai didi

java - 如何使用 gecko 获取当前页面 URL?

转载 作者:行者123 更新时间:2023-12-01 18:47:29 28 4
gpt4 key购买 nike

我正在尝试让我的 Android 网络浏览器仅打开特定的网址。因此,我想检查加载的 url 是否满足要求,并据此做一些事情。我看到了很多关于 WebView 的答案,但由于我必须使用开源浏览器(Mozilla Firefox),所以我使用 gecko。这是我的代码,我尝试使用 onLoadRequest 做一些事情,但我不知道如何使其工作。谢谢。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GeckoView view = findViewById(R.id.geckoView);
GeckoSession session = new GeckoSession();
GeckoRuntime runtime = GeckoRuntime.create(this);

session.open(runtime);
view.setSession(session);
session.loadUri("https://www.google.com");

GeckoSession.NavigationDelegate.LoadRequest loadRequest=new GeckoSession.NavigationDelegate.LoadRequest();

session.getNavigationDelegate().onLoadRequest(session,loadRequest);


}

@Override
public void onLoadRequest(GeckoSession session, GeckoSession.NavigationDelegate.LoadRequest request)
{
if(request.uri.contains("mail"))
GeckoResult.fromValue(AllowOrDeny.ALLOW);
else
GeckoResult.fromValue(AllowOrDeny.DENY);
}

最佳答案

GeckoView 严重依赖其委托(delegate)来允许对最相关的机制和事件进行特定于应用程序的处理。

简而言之,有运行时和 session 委托(delegate),设置为 GeckoRuntimeGeckoSession分别。一般模式是,对于每个委托(delegate),都有一个 set{DelegateName}Delegate() 方法将委托(delegate)附加到运行时或 session ,但有一个异常(exception)是 RuntimeTelemetry.Delegate设置在 GeckoRuntimeSettings相反。

委托(delegate)方法由 GeckoView 调用,不应由应用程序调用。

在您的情况下,您希望实现 NavigationDelegate 并在 GeckoSession 上设置您的实现以覆盖默认的顶级页面加载行为。

class MyNavigationDelegate implements GeckoSession.NavigationDelegate {
@Override
public GeckoResult<AllowOrDeny> onLoadRequest(
final GeckoSession session,
final LoadRequest request) {
// TODO: deny/allow based on your constrains.
}

// TODO: You should implement the rest of the delegate to handle page load
// errors and new session requests triggered by new-tab/window requests.
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GeckoView view = findViewById(R.id.geckoView);
GeckoSession session = new GeckoSession();
GeckoRuntime runtime = GeckoRuntime.create(this);

session.setNavigationDelegate(new MyNavigationDelegate());

session.open(runtime);
view.setSession(session);
session.loadUri("https://www.google.com");
}

更多详情请咨询API referenceGeckoView Example实现。

关于java - 如何使用 gecko 获取当前页面 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59801404/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com