Cordova插件开发

一、在Cordova中,通过JS调用native的接口进行本地代码的调用和显示,进行Hybird,而这样的native的封装使用了plugin的方式。

二、这些plugin从cordova.js该文件中可窥端倪,诸如:

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
    {
        "file": "plugins/org.apache.cordova.dialogs/www/notification.js",
        "id": "org.apache.cordova.dialogs.notification",
        "merges": [
            "navigator.notification"
        ]
    },
];    

这样的方式进行插件的声明。
并在编写的插件的js文件中进行调用java代码:

cordova.define("plugins.WebToast", function (require, exports, module) {
    var exec = require('cordova/exec');
    /**
     * Provides access to notifications on the device.
     */
    module.exports = {
        showToast: function (content, type) {
            exec(null, null, "WebToast", "showToast", [content, type]);
        }
    }
})

这里的exec即定义了在java中的showToast和参数等需要的东西。

三、自定义Toast的Cordova插件实现

3.1、在src目录下新建:plugins目录,用来存放cordova插件

在新建的你目录下,新建“WebToast.java”类,继承CordovaPlugin,覆写其中的execute方法:

public class WebToast extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args,
            CallbackContext callbackContext) throws JSONException {

        if("showToast".equals(action)){
            showToast(args.getString(0),args.getInt(1));
        }
        callbackContext.success();
        return true;

    }

    private void showToast(String string, int type) {
        if(type==1){
            Toast.makeText(cordova.getActivity(), string, Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(cordova.getActivity(), string, Toast.LENGTH_SHORT).show();
        }
    }

}

3.2、在Cordova_plugin.js中进行插件声明

{
        "file": "plugins/webToast.js",
        "id": "plugins.WebToast",
        "merges": [
            "navigator.webtoast"
        ]
    },

这里的声明表明你在js方法中使用

function show(text, type) {
            navigator.webtoast.showToast(text, type);
        }

这样的方式进行webToast.js中的showToast方法的调用。

3.3、在asserts/www下面建立“plugins”目录,并编写webToast.js文件

cordova.define("plugins.WebToast", function (require, exports, module) {
    var exec = require('cordova/exec');
    /**
     * Provides access to notifications on the device.
     */
    module.exports = {
        showToast: function (content, type) {
            exec(null, null, "WebToast", "showToast", [content, type]);
        }
    }
})

这里的showToast方法就是在js中被调用的方法,该方法执行了exec方法,exec方法详解:

exec(null, null, "WebToast", "showToast", [content, type]);

第一个参数:成功的回调;
第二个参数:错误的回调;
第三个参数:插件的名称(在res/xml/config.xml中进行声明);
第四个参数:执行的java中的方法名;
第五个参数:json形式的参数携带。

3.4、在res/xml/config.xml文件中进行声明

<feature name="WebToast">  
        <param name="android-package" value="plugins.WebToast"/>          
 </feature> 

其中feature的name是该插件的名称,params中value是插件类的”包名.类名”。

3.5、编写html文件进行js引用并调用本地Cordova插件

3.6、一个完整的项目结构

cordova_plugin

需要注意的地方就是要进行

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="plugins/webToast.js"></script>

的引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值