繁体   English   中英

人行横道从JavaScript调用Java方法

[英]Crosswalk call Java method from JavaScript

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

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

我不确定Crosswalk扩展是否是我想要的,这似乎只是为了调用Java函数而权重很大。

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

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

参考文献:

crosswalk-calling-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时,请务必确保导入的是正确的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 /铬:[ERROR:xwalk_autofill_client.cc(121)]在虚拟void xwalk :: XWalkAutofillClient :: OnFirstUserGestureObserved()中未实现

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

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

在此处输入图片说明

如果仅将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM