当前位置: 首页 > 知识库问答 >
问题:

如何运行webview。类WebAppInterface内的loadurl?

拓拔君博
2023-03-14
public class MainActivity extends Activity {
  private static WebView mWebView;  
  etc...

  // JS -> ANDROID
  public class WebAppInterface {
    Context mContext;

    WebAppInterface(Context c) {
      mContext = c;
    }

    @JavascriptInterface
    public void fn1() {
      mWebView.loadUrl("javascript:jsfn('testing123');");
    }
  }
}

我发现这个错误:

W/WebView:java。Throwable:在线程“JavaBridge”上调用了WebView方法。必须在同一线程上调用所有WebView方法。

共有1个答案

司空俊悟
2023-03-14

从JavaScript通过JavaScript接口对象的回调在后台线程上执行,在该线程中,您不能直接更新UI线程。为了在UI线程中发布更新,您需要执行以下操作。

@JavascriptInterface
public void fn1() {
        mWebView.post(new Runnable() {
            public void run() {
                mWebView.loadUrl("javascript:" + s + ";");
            }
        });
}
 类似资料:
  • docker如何在Debian主机上运行,或者在容器中运行OpenSUSE?它使用不同的内核,具有不同的模块。另外,老版本的Debian使用了老版本的内核,那么如何在3.10+版本的内核上运行它呢?旧的内核只有旧的内置功能,旧的发行版如何管理新的功能?这里面有什么“诀窍”?

  • 对于使用UIWebView、WKWebView嵌入网页在应用内的App,我们封装了从JavaScript到Native的调用,并提供了与Native一致的统计API。(点此下载JS Demo) 此处我们封装了从Javascript到Native的调用,但是如果您的APP已有JavaScript Bridge,您也可以进行自己封装。 使用方法 引用mobstat.js到您的网页内 对于UIWebvi

  • 我知道以前有人问过这个问题,但是那里的信息都没有帮助我。 我的情况是:我无法运行编译后的Kotlin类。当我尝试像运行普通java类一样运行它时,我得到了以下结果: 这让我相信,考虑到这个输出,Kotlin运行时根本就不存在。所以我尝试了以下方法: 这让我想到,也许我需要将类文件添加到我声明的类路径中,所以: 我错过了什么?

  • 在react native中,如何获取webview中的某个标签的内容,例如: 在webview中,加载baidu.com,我要获取这个页面中选择器为#s_menu_mine的innerText. 这是我当前尝试的代码,gpt给我的,但是这并不能触发handleMessage,即使触发了,我也不确定方法内的代码是否正确,代码如下:

  • 我想运行podman作为运行CI/CD管道的容器。然而,我一直从podman容器中得到这个错误: 我使用Jenkins Kubernetes插件来编写CI/CD管道,这些管道在Kubernetes集群中作为容器运行。我已经成功地编写了使用Docker-in-Docker容器来运行< code>docker build和< code>docker push命令的管道。 然而,在容器中运行Docker

  • 问题内容: 我有两个如下的Java类 没有包装: 在包装中: 我可以同时编译它们: 但是,我只能运行第一个: 我该如何跑步? 问题答案: 如果将 源 放在与包名称()相匹配的适当目录层次结构中,并从层次结构的根目录()进行编译/运行,则不会出现此问题: 您还可以使用选项进行编译,以便将类移动到这样的目录层次结构中: 请注意,您不应使用以开头的程序包名称,JDK的更高版本将引发SecurityExc