4

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

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

我不确定Crosswalk 扩展是否是我想要的,这似乎只是为了调用 Java 函数而显得如此重要。

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

4

2 回答 2

8

这里是关于如何在人行横道XWalkView中使用js调用java函数。如何使用 XWalkView 参考这个答案

参考:

人行横道调用 java-methods-with-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 页面中

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

当您导入 JavascriptInterface 时,请注意,确保您导入了正确的接口。

import org.xwalk.core.JavascriptInterface;

不是这个,这是给webview的

import android.webkit.JavascriptInterface;

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

12-02 13:24:49.921 12376-12376/com.xxxxxx.app E/chromium: [ERROR:xwalk_autofill_client.cc(121)] 未在虚拟 void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved() 中实现

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

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

在此处输入图像描述

于 2016-12-02T05:45:51.457 回答
4

如果您只使用 XWalkView 作为嵌入式视图,addJavascriptInterface则足以将 Java 对象注入 XWalkView(JavaScript),就像addJavascriptInterface在 android.webkit.WebView 中一样:

https://crosswalk-project.org/apis/embeddingapidocs_v2/reference/org/xwalk/core/XWalkView.html

http://developer.android.com/guide/webapps/webview.html#BindingJavaScript

于 2014-08-25T04:39:41.007 回答