使用 cordova-plugin-crosswalk-webview 从 JS 调用本机 Java 代码

Calling native java code from JS with cordova-plugin-crosswalk-webview

本文关键字:本机 Java 代码 调用 JS cordova-plugin-crosswalk-webview 使用      更新时间:2023-09-26

我可以使用@JavascriptInterface成功地从 Cordova 5.4.0 应用程序中的 JS 调用本机 Java 代码。但是在添加cordova-plugin-crosswalk-webview之后,它不起作用。搜索后,我将代码修改为:-

public class MainActivity extends CordovaActivity{
    @Override
    public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      loadUrl("file://android_assets/www/index.html");
      ((XWalkView)appView.getEngine().getView()).addJavascriptInterface(this,"MainActivity");
    }
   @JavascriptInterface
   public void getMessage() {
        Toast.makeText(getApplicationContext(), "this is my Toast message!!!  =)",Toast.LENGTH_LONG).show();
   }
}

并从 js 调用本机代码为:

window.MainActivity.getMessage();

我也进口了

import org.xwalk.core.JavascriptInterface;
import org.xwalk.core.XWalkView;

还尝试更换

@JavascriptInterface

@org.xwalk.core.JavascriptInterface

现在应用程序甚至无法打开。它崩溃了。请帮忙。

onXWalkReady()内调用addJavaScriptInterface()而不是在onCreate()回调中执行此操作,这对我来说解决了这个问题。

PS:方法链接不是一个好的做法。

请更新config.xml 偏好name="android-minSdkVersion" value="16" 到偏好name="android-minSdkVersion" value="17和使用导入org.xwalk.core.JavascriptInterface;使用 Cordova 版本 6.3.0 或更高版本