上周刚搞完ApiCould的自定义模块开发,这周又有一个新的需求Cordova插件开发,经过几天的奋斗,看了不少博客,总算搞出了Cordova的打印插件。在完成ApiCodld和Cordova插件后感觉这两个在插件开发步骤上差不了太多,这篇文章主要记录下自己的开发过程,方便以后使用。
一、环境
1、node.js、cordova
2、Android studio3.5.1、jdk1.8
二、开发准备
1、安装cordova,npm install -g cordova
2、创建项目:cordova create MyTestProgject
3、添加android:cordova platforms add android
项目结构如下,android工程在platforms里
三、开始开发 1、导入上面创建的cordova项目里的android工程 2、创建自己的插件类并继承CordovaPlugin,实现initialize、execute方法,execute方法就是你js里面执行的,我的插件如下
public class PrintlcPlugin extends CordovaPlugin { private final String TAG=PrintlcPlugin.class.getName (); private IPosApi mPosApi; private Context context; private CallbackContext callbackContext; @Override public void initialize(CordovaInterface cordova, CordovaWebView webView) { super.initialize (cordova, webView); Log.e (TAG, "initialize:"); context=cordova.getContext (); mPosApi=PosFactory.getPosDevice (context); } @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { this.callbackContext=callbackContext; switch (action) { case "initPrint": initPrint(callbackContext); break; case "resume": resumePrint (); break; case "pause": pausePrint (); break; case "setEncode": setEncode (args); break; case "setLanguage": setLanguage (args); break; case "printFeatureList": printFeatureList (); break; case "closePrint": closePrint (callbackContext); break; case "printText": printText (args); break; case "printQR": printQR (args); break; case "printBarcode": printBarcode (args); break; case "printCheckMark": printCheckMark (args); break; case "printFeedPaper": printFeedPaper (args); break; case "printBackPaper": printBackPaper (args); break; case "printImage": printImage (); break; case "startPrint": startPrint (); break; default: return false; } return false; } public void initPrint(CallbackContext callbackContext) { try{ Log.e (TAG, "initPrint: "); mPosApi.setPos (); mPosApi.setPrintEventListener (new OnP