java - Crosswalk 从 JavaScript 调用 Java 方法

标签 java android cordova webview crosswalk-runtime

我现在正在使用人行横道。当用户单击 HTML 中的按钮时,我需要调用 Java 方法,它可能如下所示:

<a href="#" onclick="callJava()">Start</a>

我不确定 Crosswalk extension是我想要的,它似乎只是为了调用 Java 函数而如此重量级。

有没有更简单的方法来做到这一点?或者在这种情况下我应该将 Cordova 与 Crosswalk 一起使用吗?

最佳答案

这里介绍人行横道XWalkView中如何用js调用java函数。如何使用 XWalkView 引用这个 answer .

引用资料:

crosswalk-calling-java-methods-with-javascript

XWalkView manual

下面是js调用java的过程,以及注意事项

将此添加到您在 XWalkView 中的 Activity

webSettings.setJavaScriptEnabled(true);
mXWalkView.addJavascriptInterface(new JsInterface(), "NativeInterface");

还有这个,你也让它成为一个类

public class JsInterface {
    public JsInterface() {
    }

    @JavascriptInterface
    public void act() {
        //do something
    }
}

在html页面中

<button onclick="NativeInterface.act()">Call Java Here</button>

当您导入 JavascriptInterface 时,请小心,确保您导入的是准确的接口(interface)。

import org.xwalk.core.JavascriptInterface;

不是这个,这是用于 webview 的

导入android.webkit.JavascriptInterface;

如果你导入这个,当你在你的android studio中操作页面和下面的错误时,这将导致没有任何 Action 。

12-02 13:24:49.921 12376-12376/com.xxxxxx.app E/chromium: [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()

通常当你导入 JavascriptInterface 时,第一个就是我们想要的,如下图所示。

但有时当您从 webview 更改为 XWalkView 时,您可能会忘记更改 JavascriptInterface。

enter image description here

关于java - Crosswalk 从 JavaScript 调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25478434/

相关文章:

Java压缩字符串

java - 使用 "requesLocationUpdates()"时出现一些错误

android - 构建失败,有异常吗?安卓

android - 在 Android 中使用 OpenSL ES 而不是 AudioTrack 的原因应该是什么?

android - 深度链接 - 通过另一个 Ionic 应用程序打开一个 Ionic 应用程序

android - Cordova 在应用程序中存储一小段信息

java - 使用 HTTPS 的网络服务

java - Java中如何使用反射获取类引用名称

java - 如何读取段落特定一侧的行

database - AppStore 更新后 Cordova 应用程序的 localStorage 被删除