【问题标题】:Calling native java code from JS with cordova-plugin-crosswalk-webview使用 cordova-plugin-crosswalk-webview 从 JS 调用本机 java 代码
【发布时间】:2016-01-14 12:30:39
【问题描述】:

我可以使用@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

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

【问题讨论】:

  • 任何异常信息?
  • java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.cloudlabz.allsaletags/com.cloudlabz.allsaletags.MainActivity}: java.lang.UnsupportedOperationException: addJavascriptInterface
  • 你为什么不直接使用cordova插件呢?
  • 是的,最后,在花了 1.5 个月的时间之后,我不得不使用插件。

标签: javascript android cordova webview


【解决方案1】:

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

P.S.:方法链接不是一个好习惯。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多