Crosswalk从JavaScript调用Java方法
我现在正在使用人行横道。 当用户单击HTML中的按钮时,我需要调用Java方法,如下所示:
Start
我不确定Crosswalk扩展是否是我想要的,这对于调用Java函数似乎是如此重要。
有更简单的方法吗? 或者在这种情况下我应该将Cordova与Crosswalk一起使用?
如果您只将XWalkView用作嵌入式视图,则addJavascriptInterface
足以将Java对象注入XWalkView(JavaScript),就像android.webkit.WebView中的addJavascriptInterface
一样:
https://crosswalk-project.org/apis/embeddingapidocs_v2/reference/org/xwalk/core/XWalkView.html
http://developer.android.com/guide/webapps/webview.html#BindingJavaScript
这是关于如何在人行横道XWalkView中使用js调用java函数。 如何使用XWalkView参考这个答案 。
参考文献:
人行横道通话-Java的方法-用JavaScript的
XWalkView手册
下面是从js和通知调用java的过程。
将此添加到XWalkView中的活动
webSettings.setJavaScriptEnabled(true); mXWalkView.addJavascriptInterface(new JsInterface(), "NativeInterface");
而这,你也使它成为一个阶级
public class JsInterface { public JsInterface() { } @JavascriptInterface public void act() { //do something } }
并在HTML页面中
当您导入JavascriptInterface时,请注意,确保您导入了确切的一个。
import org.xwalk.core.JavascriptInterface;
不是这个,这是webview
import android.webkit.JavascriptInterface;
如果你导入这个,当你在页面上操作时,这将导致没有动作,并且你的android工作室中会出现以下错误。
12-02 13:24:49.921 12376-12376 / com.xxxxxx.app E / chromium:[错误:xwalk_autofill_client.cc(121)]未在virtual void xwalk中实现:: XWalkAutofillClient :: OnFirstUserGestureObserved()
通常在导入JavascriptInterface时,第一个就是我们想要的,如下图所示。
但有时当您从webview更改为XWalkView时,您可能会忘记更改JavascriptInterface。