我现在正在使用人行横道。当用户单击 HTML 中的按钮时,我需要调用 Java 方法,它可能如下所示:
<a href="#" onclick="callJava()">Start</a>
我不确定 Crosswalk extension是我想要的,它似乎只是为了调用 Java 函数而如此重量级。
有没有更简单的方法来做到这一点?或者在这种情况下我应该将 Cordova 与 Crosswalk 一起使用吗?
最佳答案
这里介绍人行横道XWalkView中如何用js调用java函数。如何使用 XWalkView 引用这个 answer .
引用资料:
crosswalk-calling-java-methods-with-javascript
下面是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。
关于java - Crosswalk 从 JavaScript 调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25478434/