Crosswalk在java上从java调用js函数
我试图在我的Android应用程序中使用crosswalk运行时。 我在android 4+上试过这个。
我有一些js和html代码,它对我来说非常适合。 但它不像android webview那样工作。 在webview中,我可以从java代码调用javascript函数。 但我在人行横道上找不到任何选择。 任何想法?
谢谢
Crosswalk支持与Android WebView类似的API接口( evaluateJavascript
),用于从Java调用JavaScript函数:
您也可以使用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。
- 添加此import语句
import org.xwalk.core.XWalkView;
- 在任何公开的javascript方法之前放这个
@org.xwalk.core.JavascriptInterface
而不是默认的注释@JavascriptInterface