gpt4 book ai didi

java - 将数据从 Javascript 传递到 Android WebView

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:27 24 4
gpt4 key购买 nike

我写了一段 Java 代码,旨在通过 Android WebView 网关从 Javascript 调用 Java 代码。

webView = (WebView) findViewById(R.id.captchaView);
WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
webView.loadUrl("https://google.com/");

webView.setWebViewClient(BrowserHandler);
webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs");

WebViewClient BrowserHandler = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.cpjs.onPageLoaded(document.body.innerHTML);void(0);");
}
};

final class IJavascriptHandler {
IJavascriptHandler() {
}

public void onPageLoaded(String html) {
// this is called from JS
Toast t = Toast.makeText(getApplicationContext(), "Yes", 2000);
t.show();
}
}

上面的代码检查网页加载,一旦页面加载完成,它将调用从 Java 公开的 javascript 函数,以便它可以从页面携带我需要的东西。

这没有按预期工作,它所做的只是每隔几秒刷新一次页面。我不确定这里出了什么问题?

最佳答案

嗯,在你所做的事情中有很多事情是相当奇怪的。

  • 在 Java 中,您正在触发 Javascript...回调到 Java。您假设这是安全的。

  • 您正在加载 Google 主页,它会在遇到 Android 浏览器时执行重定向,我上次检查过。

  • 您正在尝试显示一个Toast,但您不知道该代码是否会在主应用程序线程上运行。

关于java - 将数据从 Javascript 传递到 Android WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4906158/

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