####一、JavaScript和Java代码的桥接 Cordova插件的原理是,JavaScript 调用 Java,Java 调用设备功能。很显然,Java 做了一个中间过程,这里的关键在于,如何实现 JavaScript 和 Java 的桥接。 我们首先在 src 文件夹中创建一个 com.jiusem.cordova 包,在包内创建一个 TestPlugin.java 文件,编写下面的代码:
package com.jiusem.cordova;import org.apache.cordova.CallbackContext;import org.apache.cordova.CordovaPlugin;import org.json.JSONArray;public class TestPlugin extends CordovaPlugin{ public boolean execute(String action , JSONArray args, CallbackContext callbackContext ){ return true; }}
每一款插件需要继承自 CordovaPlugin 类,而包名和插件名是自定义的,这里仅仅是一个例子。插件必须包含一个 execute 方法,它是唯一可以被 JavaScript 直接调用的方法。 在 res/xml/config.xml 文件 <widget></widget> 标签内加入下面的代码:
TestPlugin 表示插件的名称,com.jiusem.cordova.TestPlugin 表示插件的包名和类名。 下面,我们就可以用 JavaScript 调用插件的 execute 方法了:
cordova.exec 方法其他参数先不考虑,保持原状,第三个参数 TestPlugin 是插件的名称。上面的代码将会调用 TestPlugin.java 文件的 execute 方法。 运行APP,却什么都看不到,为什么呢?因为 execute 方法没有执行任何操作,只是返回了一个 true 。我们可以加入一些代码,来显示一个简单的提示语,这样我们可以确定 execute 方法确实是执行了:
public class TestPlugin extends CordovaPlugin{ public boolean execute(String action , JSONArray args, CallbackContext callbackContext ){ /*显示一个提示语*/ Context Activity = this.cordova.getActivity().getApplicationContext(); Toast.makeText(Activity, "hello,world!", Toast.LENGTH_LONG).show(); /*显示一个提示语*/ return true; }}
这里使用了 Context 和 Toast 类,还需要在前面加入:
import android.content.Context;import android.widget.Toast;
因为 Java 在使用不在一个包的类之前,都需要先导入。 再次运行APP,将会看到提示语:hello,world! 我们完成了一个最简单的Cordova插件。
好好体会一下,如果有问题,欢迎留言,或者加QQ群:454566813,一起讨论!