|
Cordova插件用起步开发工具可以直接开发吗,开发的方法是按照 http://doc.wex5.com/?p=2815 、所提到的布局在 Native 里的plugins 里按照
如下形式写出来就行吗
当前目录下(当然可以放在别的目录下)创建 ExtraInfo 文件夹,先看下具体的目录结构:
<?xml version="1.0" encoding="utf-8"?>
<plugin id="cn.net.wenzhixin.cordova" version="0.0.1"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>ExtraInfo</name>
<description>Description</description>
<js-module name="ExtraInfo" src="www/ExtraInfo.js">
<clobbers target="cordova.plugins.ExtraInfo"/>
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="ExtraInfo">
<param name="android-package" value="cn.net.wenzhixin.cordova.ExtraInfo"/>
</feature>
</config-file>
<source-file src="src/android/ExtraInfo.java" target-dir="src/cn/net/wenzhixin/cordova"/>
</platform>
</plugin>
有几个关键的字段需要解释下:
id: 插件的标识,即发布到 plugins.cordova.io 的 ID
name:插件的名称
description:描述信息
js-module:对应我们的 javascript 文件,src 属性指向 www/ExtraInfo.js
platform:支持的平台,这里仅仅用到了 android
这里是插件的配置信息,最后会添加到 res/xml/config.xml 文件中,并且将我们的 src/android/ExtraInfo.java,复制到 android 的 package 包中。 接下来,ExtraInfo.js 的内容很简单:
1
2
3
4
5
var exec = require('cordova/exec');
exports.getExtra = function(success, error) {
exec(success, error, "ExtraInfo", "getExtra", []);
};
用过 Nodejs 或者了解过 AMD、CMD 的话(当然,没了解过也没关系),一定会觉得很熟悉。简单的说,require 用于引入我们的类,exports 用于导出我们的方法。这里对外公开了 getExtra 方法,以便我们在 app 中可以用到。
最后看 ExtraInfo.java 的内容:
public class ExtraInfo extends CordovaPlugin {
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
Activity activity = this.cordova.getActivity();
if (action.equals("getExtra")) {
Intent i = activity.getIntent();
if (i.hasExtra(Intent.EXTRA_TEXT)) {
callbackContext.success(i.getStringExtra(Intent.EXTRA_TEXT));
} else {
callbackContext.error("");
}
return true;
}
return false;
}
}
继承了 CordovaPlugin 类,并重写 execute 方法,使用 action 来判断我们在 javascript 中调用的方法名,成功的话调用callbackContext.success(message),失败调用 callbackContext.error(message) 方法,分别对应 javascript 文件中的success 和 error 回调函数。 |
|