【问题标题】:Crosswalk call Java method from JavaScript人行横道从 JavaScript 调用 Java 方法
【发布时间】:2014-08-25 02:56:15
【问题描述】:

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

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

我不确定Crosswalk extension 是否是我想要的,这似乎只是为了调用Java 函数。

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

【问题讨论】:

    标签: java android cordova webview crosswalk-runtime


    【解决方案1】:

    这里是关于如何在人行横道XWalkView中用js调用java函数。 XWalkView的使用方法请参考answer

    参考资料:

    crosswalk-calling-java-methods-with-javascript

    XWalkView manual

    下面是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/铬: [错误:xwalk_autofill_client.cc(121)] 未实现 虚空 xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()

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

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

    【讨论】:

      【解决方案2】:

      如果你只使用 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

      【讨论】:

      • 谢谢!这很有帮助!
      • Ovilia 或@Shouqun 我试着让它工作一天!如果它适用于您,请分享一个代码示例。我求求你了。我很着急,今天我试过的都没有用-_-
      • Olivia 和@Shouqun 这是我今天尝试的最合乎逻辑的事情,但仍然无法正常工作:stackoverflow.com/questions/27820474/…
      • @Ovilia 你能帮我吗??
      • @AlexStanese 请看看这是否有帮助:zhangwenli.com/blog/2014/08/25/…
      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      相关资源
      最近更新 更多