Cordova自定义插件

时间:2023-02-02 12:45:57

项目原因需要自定义Cordova插件,下面把实现过程记录以便将来查阅。
工程为Eclipse下的Android工程,该工程已经引入Cordova。Cordova版本4.0.2。
1、定义插件类OpenAppPlugin,继承CordovaPlugin覆写execute方法,该方法实现调用第三方App功能。
    public class OpenAppPlugin extends CordovaPlugin {
    
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {        
            if (action.equals("openThridPartyApp")) {
                Activity activity = this.cordova.getActivity();            
                String pkg = (String)args.get(0);
                PackageManager packageManager = activity.getPackageManager();
                Intent intent = packageManager.getLaunchIntentForPackage(pkg);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ;
                activity.startActivity(intent);             
            }
            return false;
        }    
    }
2、配置config.xml文件,在res/xml文件夹中已有config.xml。
    在配置文件widget节点下添加配置:
    <feature name="OpenAppPlugin">
        <param name="android-package" value="com.bf.launcher.OpenAppPlugin" />
    </feature>
3、编写插件js文件。
    在assets/www/plugins下新建blue-air/openapp.js文件,内容如下:
    cordova.define("com.blueair.plugin.openapp", function(require, exports, module) {
         var exec = require('cordova/exec');
         module.exports = {
            openThridPartyApp : function(config) {
                var successCallBack = function() {};
                var errorCallback = function() {};
                exec(successCallBack, errorCallback, 'BFPlugin', 'openThridPartyApp', [config]);
             }
        };
    });
4、在cordova_plugins.js注册插件。
    在assets/www/cordova_plugins.js中module.exports中添加openapp.js的引用。添加如下代码:
    {
        "file": "plugins/blue-air/openapp.js",
        "id": "com.blueair.plugin.openapp",
        "clobbers": [
            "blueAir.plugins.openapp"
        ]
    }
5、在页面中调用插件。
   在页面中调用插件的方式如下:
   function openApp(pageageName){
        blueAir.plugins.openapp.openThridPartyApp(pageageName);
   }