Crosswalk在java上从java调用js函数

我试图在我的Android应用程序中使用crosswalk运行时。 我在android 4+上试过这个。

我有一些js和html代码,它对我来说非常适合。 但它不像android webview那样工作。 在webview中,我可以从java代码调用javascript函数。 但我在人行横道上找不到任何选择。 任何想法?

谢谢

Crosswalk支持与Android WebView类似的API接口( evaluateJavascript ),用于从Java调用JavaScript函数:

https://crosswalk-project.org/apis/embeddingapidocs/reference/org/xwalk/core/XWalkView.html#evaluateJavascript(java.lang.String ,)

您也可以使用load直接调用javascript函数,如: xwalkView.load("javascript:" + jsCode, null)

你是否遇到过Crosswalk API的任何问题?

在Android Studio里面的app / module / lib level build.gradle将它添加到依赖项中:

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile 'org.xwalk:xwalk_core_library:12.41.296.5'} 

同步项目

创建xml布局资源

     

在活动onCreate或由它调用

 // Don't know how this helps if the preferences are connected? XWalkPreferences.setValue("enable-javascript", true); XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true); xWalkView=(XWalkView)findViewById(R.id.xwalkWebView); xWalkView.addJavascriptInterface(new JS_Bind(this, xWalkView),"Android"); xWalkView.clearCache(true); xWalkView.load(COM_URL, null); 

创建类JS_Bind:

 public class JS_Bind { private static final String TAG = "JS_Bind"; private Context context; private XWalkView xWalkWebView; public JS_Bind(Context c, XWalkView xWalkWebView) { context = c; this.xWalkWebView = xWalkWebView; } @JavascriptInterface public void showToast(String toast) { Log.d(TAG, "showToast(String toast)"); Toast.makeText(context, toast, Toast.LENGTH_SHORT).show(); } } 

在Web Java脚本中调用函数:

 Android.showToast(toast); 

确保导入正确的xwalk @JavaScripInterface装饰器而不是标准的Web视图装饰器。

上面的回应几乎完成了。 正如@Someone Somewhere评论的那样,需要将这些添加到行中以便从Crosswalk Webview调用本机function。

  1. 添加此import语句import org.xwalk.core.XWalkView;
  2. 在任何公开的javascript方法之前放这个@org.xwalk.core.JavascriptInterface而不是默认的注释@JavascriptInterface