gpt4 book ai didi

javascript - 尝试在 WebView 中调用 javascript 时出现 "Connection to the server was unsuccessful"

转载 作者:搜寻专家 更新时间:2023-11-01 09:08:53 25 4
gpt4 key购买 nike

与此处相同标题的其他问题不同,PhoneGap/Android 应用程序运行良好并加载 View 和外部链接的 javascript 文件,除了当我尝试从 Java 端调用 javascript 方法时。我是这样调用方法的:

public void update(final String data) {
appView.post(new Runnable(){
@Override
public void run(){
loadUrl("javascript: dispatch('" + data + "')");
}
});
}

并且 update 在非 UI 线程中被调用。

问题是,我正在调用 javascript 方法,功能运行正常,工作正常,并按照我的预期进行,但几秒钟后,应用程序崩溃并显示错误消息“连接到服务器不成功”,并且我调用的方法的名称。我尝试按照其他问题中的建议增加超时时间,但它仍然在超时结束时崩溃。

顺便说一句,我还收到一个关于从非 UI 线程调用 WebView 方法的警告,这就是我添加 post 调用的原因,所以我不确定为什么会这样,但是它发生在日志中的超时错误之前,所以它可能是相关的?

编辑:

当崩溃发生时,我在日志中收到了这个错误。

03-26 15:21:38.671: W/webview(3159): java.lang.Throwable: Warning: A WebView method was called on thread 'Thread-206'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.
03-26 15:21:38.671: W/webview(3159): at android.webkit.WebView.checkThread(WebView.java:9468)
03-26 15:21:38.671: W/webview(3159): at android.webkit.WebView.stopLoading(WebView.java:2253)
03-26 15:21:38.671: W/webview(3159): at org.apache.cordova.DroidGap$1$1.run(DroidGap.java:549)
03-26 15:21:38.671: W/webview(3159): at java.lang.Thread.run(Thread.java:856)
03-26 15:21:38.675: E/DroidGap(3159): DroidGap: TIMEOUT ERROR! - calling webViewClient

有人告诉我 appView.post 会避免这种情况,因为它会导致 loadUrl 调用发生在 UI 线程中。显然不是这样?

编辑:

问题解决了。作为记录,我将 loadURL 行更改为:

sendJavascript("dispatch('" + data + "')");

而且有效。

最佳答案

你最好打电话:

this.sendJavaScript("dispatch(('" + data + "')");

如果您的 Java 类正在扩展插件。

关于javascript - 尝试在 WebView 中调用 javascript 时出现 "Connection to the server was unsuccessful",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877638/

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