Java tutorial
package com.HXcordova; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaArgs; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CordovaWebView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Base64; import android.util.Log; import com.hxsmart.iMateSDK.HXiMateSDK; import com.hxsmart.imateinterface.BluetoothThread; import com.hxsmart.imateinterface.IcCardData; import com.hxsmart.imateinterface.IdInformationData; import com.hxsmart.imateinterface.MagCardData; import com.hxsmart.imateinterface.UtilTools; import com.hxsmart.imateinterface.pbochighsdk.PbocCardData; import com.ivsign.android.IDCReader.IDCReaderSDK; public class iMateHxDevice extends CordovaPlugin { private HXiMateSDK iMate; private CallbackContext callbackContext; @Override public void initialize(CordovaInterface cordova, CordovaWebView webView) { iMate = HXiMateSDK.getInstance(cordova.getActivity().getApplicationContext()); iMate.DisableCheckTactics(true);//?? super.initialize(cordova, webView); } @Override public boolean execute(String action, CordovaArgs args, CallbackContext mCallbackContext) throws JSONException { System.out.println("exec !!!!!!!" + action); //? if (!iMate.deviceIsConnecting()) { mCallbackContext.error("iMate!"); return true; } //? if (iMate.deviceIsWorking()) { mCallbackContext.error(",??????"); return true; } JSONArray jsonarrayTmp = null; JSONObject jsonTmp = null; try { jsonarrayTmp = new JSONArray(args.getString(0));// [{},{},{},...] jsonTmp = jsonarrayTmp.getJSONObject(0); } catch (JSONException e) { Log.i("zbh", "??JSONArray,new JSONObject(args.getString(0))?"); jsonTmp = new JSONObject(args.getString(0)); } final JSONArray jsonarray = jsonarrayTmp; final JSONObject json = jsonTmp; callbackContext = mCallbackContext; // if ("updateTactic".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "Id;startTime;endTime;longitude;latitude;range;canUse")) { callbackContext .error("Id;startTime;endTime;longitude;latitude;range;canUse??"); return true; } cordova.getThreadPool().execute(new Runnable() { public void run() { JSONObject jsontmp = new JSONObject(); final ArrayList<String> arraylist = new ArrayList<String>(); try { for (int i = 0; i < jsonarray.length(); i++) { jsontmp = jsonarray.getJSONObject(i); StringBuilder sb = new StringBuilder(""); sb.append(jsontmp.getString("Id")); sb.append(";"); sb.append(jsontmp.getString("startTime")); sb.append(";"); sb.append(jsontmp.getString("endTime")); sb.append(";"); sb.append(jsontmp.getString("longitude")); sb.append(";"); sb.append(jsontmp.getString("latitude")); sb.append(";"); sb.append(jsontmp.getString("range")); sb.append(";"); sb.append(jsontmp.getString("canUse")); arraylist.add(sb.toString()); } } catch (JSONException e) { callbackContext.error(e.getMessage()); return; } int ret = iMate.updateTactics(arraylist); if (ret == 0) { callbackContext.success("?"); } else { callbackContext.error(""); } } }); //? } else if ("getTactics".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { ArrayList<String> arraylist = iMate.getTactics(); if (arraylist != null) { JSONArray JsonArray = new JSONArray(); for (String string : arraylist) { String[] allKEYs = string.split(";"); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("Id", allKEYs[0]); jsonObject.put("startTime", allKEYs[1]); jsonObject.put("endTime", allKEYs[2]); jsonObject.put("longitude", allKEYs[3]); jsonObject.put("latitude", allKEYs[4]); jsonObject.put("range", allKEYs[5]); jsonObject.put("canUse", allKEYs[6]); JsonArray.put(jsonObject); } catch (JSONException e) { callbackContext.error(e.getMessage()); return; } } callbackContext.success(JsonArray); } else { callbackContext.error(iMate.getErrorString()); } } }); //??:??,? } else if ("getDeviceInfo".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { String SN = iMate.deviceSerialNumber(); String termId = iMate.TermID(); if (SN == null || termId == null) callbackContext.error("??"); else callbackContext.success( "{" + "\"DeviceSN\":\"" + SN + "\"" + "\"termID\":\"" + termId + "\"" + "}"); } }); //? } else if ("subDeviceTest".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.deviceTest(0xFF); if (ret == 0) callbackContext.success("?"); else if (ret == 0x01) callbackContext.error("??"); else if (ret == 0x02) callbackContext.error("?"); } }); //?? } else if ("cancel".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.cancel(); callbackContext.success(); } }); //? } else if ("buzzer".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.buzzer(); callbackContext.success(); } }); //??socket } else if ("isConnectTest".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { if (iMate.deviceIsConnecting()) callbackContext.success(""); else callbackContext.error(""); } }); //?? } else if ("waitAllCard".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout")) { callbackContext.error("timeout?"); return true; } final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { byte[] ret = iMate.waitEvent(0xff, timeout); if (ret == null) { callbackContext.error(iMate.getErrorString()); } else { // String Event; if (ret[0] == 0x01) { // ??? Event = "???"; Log.i("zbh", new String(ret, 1, 141)); String track2 = new String(ret, 1, 37); String track3 = new String(ret, 38, 104); String[] tmpStrings = track2.split("="); callbackContext.success("{" + "\"Event\":\"" + Event + "\"" + "\"track2\":\"" + track2 + "\"" + "\"track3\":\"" + track3 + "\"" + "\"cardNo\":\"" + tmpStrings[0] + "\"" + "}"); return; } else if (ret[0] == 0x02) { Event = "IC?"; int length = ret.length - 1; byte[] bytes = new byte[length]; System.arraycopy(ret, 1, bytes, 0, length); String ATR = BluetoothThread.bytesToHexString(bytes, length); callbackContext .success("{" + "\"Event\":\"" + Event + "\"" + "\"ATR\":\"" + ATR + "\"" + "}"); return; } else { Event = "?"; int length = ret.length - 1; byte[] bytes = new byte[length]; System.arraycopy(ret, 1, bytes, 0, length); String ATR = BluetoothThread.bytesToHexString(bytes, length); callbackContext .success("{" + "\"Event\":\"" + Event + "\"" + "\"ATR\":\"" + ATR + "\"" + "}"); return; } } } }); //? } else if ("readID".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout")) { callbackContext.error("timeout?"); return true; } final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { IdInformationData idInfo = new IdInformationData(); int ret = iMate.readIdInformation(idInfo, timeout); Log.i("zbh", ":" + ret); if (ret == 0) { ret = IDCReaderSDK.decodingPictureData(BluetoothThread.WLTLIB_DIR, idInfo.getPictureData()); String message = null; switch (ret) { case 0: String photodata = readIdBmpAndToBASE64( BluetoothThread.WLTLIB_DIR + File.separator + "zp.bmp"); if (photodata != null) { String birthday = idInfo.getBirthdayYearString() + "." + idInfo.getBirthdayMonthString() + "." + idInfo.getBirthdayDayString(); message = "{" + "\"name\":\"" + idInfo.getNameString() + "\"" + "\"sex\":\"" + idInfo.getSexString() + "\"" + "\"nation\":\"" + idInfo.getNationString() + "\"" + "\"birthday\":\"" + birthday + "\"" + "\"address\":\"" + idInfo.getAddressString() + "\"" + "\"idNumber\":\"" + idInfo.getIdNumberString() + "\"" + "\"issuser\":\"" + idInfo.getIssuerString() + "\"" + "\"validdate\":\"" + idInfo.getValidDateString() + "\"" + "\"photoBase64Data\":\"" + photodata + "\"" + "}"; callbackContext.success(message); return; } message = "?base64"; break; case 1: message = "???wltlibDirectory?base.dat"; break; case 2: message = "?license.lic"; break; case 3: message = "?"; break; } callbackContext.error(message); } else if (ret == 2) { callbackContext.error(idInfo.getErrorString()); } else if (ret == 1) { callbackContext.error(""); } else if (ret == -1) { callbackContext.error("?"); } else if (ret == -9) { callbackContext.error("???"); } } }); //???(?) } else if ("readMsgCard".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout")) { callbackContext.error("timeout?"); return true; } final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { MagCardData cardData = new MagCardData(); int ret = iMate.swipeCard(cardData, timeout); if (ret != 0) { String errMsg = ""; if (ret == 1) errMsg = ""; else if (ret == 2) errMsg = cardData.getErrorString(); else if (ret == -1) errMsg = "?"; else if (ret == -9) errMsg = "???"; else errMsg = ":[" + ret + "]"; callbackContext.error(errMsg); return; } if (cardData.getCardNoString() == null || cardData.getCardNoString().length() == 0) { callbackContext.error("?????"); return; } if (cardData.getTrack2String() == null || cardData.getTrack2String().length() == 0) { callbackContext.error("????"); return; } callbackContext.success("{" + "\"cardNo\":\"" + cardData.getCardNoString() + "\"" + "\"track2\":\"" + cardData.getTrack2String() + "\"" + "\"track3\":\"" + cardData.getTrack3String() + "\"" + "}"); } }); //IC? } else if ("readICCard".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout")) { callbackContext.error("timeout?"); return true; } final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { IcCardData icCardInfo = new IcCardData(); int ret = iMate.readIcCard(icCardInfo, timeout); if (ret != 0) { String errMsg = ""; if (ret == 1) errMsg = ""; else if (ret == 2) errMsg = icCardInfo.getErrorString(); else if (ret == -1) errMsg = "?"; else if (ret == -9) errMsg = "???"; else errMsg = ":[" + ret + "]"; callbackContext.error(errMsg); return; } callbackContext.success("{" + "\"cardNo\":\"" + icCardInfo.getCardNoString().replace("f", "") + "\"" + "\"track2\":\"" + icCardInfo.getTrack2String() + "\"" + "\"PanSN\":\"" + icCardInfo.getPanSequenceNoString() + "\"" + "\"expireDate\":\"" + icCardInfo.getExpireDateString() + "\"" + "\"holderName\":\"" + icCardInfo.getHolderNameString() + "\"" + "\"holderID\":\"" + icCardInfo.getHolderIdString() + "\"" + "}"); } }); //RF? } else if ("readRFCard".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout")) { callbackContext.error("timeout?"); return true; } final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { IcCardData icCardInfo = new IcCardData(); int ret = iMate.readRfCard(icCardInfo, timeout); if (ret != 0) { String errMsg = ""; if (ret == 1) errMsg = ""; else if (ret == 2) errMsg = icCardInfo.getErrorString(); else if (ret == -1) errMsg = "?"; else if (ret == -9) errMsg = "???"; else errMsg = ":[" + ret + "]"; callbackContext.error(errMsg); return; } callbackContext.success("{" + "\"cardNo\":\"" + icCardInfo.getCardNoString().replace("f", "") + "\"" + "\"track2\":\"" + icCardInfo.getTrack2String() + "\"" + "\"PanSN\":\"" + icCardInfo.getPanSequenceNoString() + "\"" + "\"expireDate\":\"" + icCardInfo.getExpireDateString() + "\"" + "\"holderName\":\"" + icCardInfo.getHolderNameString() + "\"" + "\"holderID\":\"" + icCardInfo.getHolderIdString() + "\"" + "}"); } }); //?55 } else if ("readICCardField55".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "timeout;slot")) { callbackContext.error("timeout;slot??"); return true; } final int timeout = json.getInt("timeout"); final int slot = json.getInt("slot"); cordova.getThreadPool().execute(new Runnable() { public void run() { PbocCardData pbocCardData = new PbocCardData(); int ret = iMate.readIC_Card_55Field(slot, pbocCardData, timeout); if (ret != 0) { String errMsg = ""; if (ret == -2) errMsg = iMate.getErrorString(); else if (ret == -1) errMsg = "?"; else if (ret == -9) errMsg = "???"; else errMsg = getPbocHighError(ret) + "[" + ret + "]"; callbackContext.error(errMsg); return; } callbackContext.success( "{" + "\"cardNo\":\"" + pbocCardData.pan + "\"" + "\"track2\":\"" + pbocCardData.track2 + "\"" + "\"PanSN\":\"" + pbocCardData.panSeqNo + "\"" + "\"field55\":\"" + pbocCardData.field55 + "\"" + "\"holderName\":\"" + pbocCardData.holderName + "\"" + "\"extInfo\":\"" + pbocCardData.extInfo + "\"" + "}"); } }); //?ARPC } else if ("verifyARPC_RunScript".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "script")) { callbackContext.error("script?"); return true; } final String Script = json.getString("script"); cordova.getThreadPool().execute(new Runnable() { public void run() { String newField55 = new String(); int ret = iMate.verifyARPC_RunScript(Script, newField55); if (ret != 0) { String errMsg = getPbocHighError(ret) + "[" + ret + "]"; callbackContext.error(errMsg); return; } callbackContext.success("{" + "\"newField55\":\"" + newField55 + "\"" + "}"); } }); //??? } else if ("getFingerprintFeature".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "FingerprintModel;FeatureDataType")) { callbackContext.error("FingerprintModel;FeatureDataType??"); return true; } final int theFingerprintModel = json.getInt("FingerprintModel"); final int DataType = json.getInt("FeatureDataType"); cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.FingerPrint_setFingerprintModel(theFingerprintModel); iMate.FingerPrint_setFeatureDataType(DataType); String Feature = iMate.FingerPrint_GetFeature(); if (Feature == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success("{" + "\"FingerprintData\":\"" + Feature + "\"" + "}"); } }); //? ?? } else if ("FingerPrint_Cancel".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.FingerPrint_Cancel(); callbackContext.success(); } }); //? } else if ("Pinpad_setPinpadModel".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "PinpadModel")) { callbackContext.error("PinpadModel?"); return true; } final int thePinpadModel = json.getInt("PinpadModel"); cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.Pinpad_setPinpadModel(thePinpadModel); callbackContext.success(); } }); //? } else if ("Pinpad_PowerOn".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_PowerOn(); if (ret == 0) callbackContext.success(); else callbackContext.error(iMate.getErrorString()); } }); //??? } else if ("Pinpad_Cancel".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { iMate.Pinpad_Cancel(); callbackContext.success(); } }); //???? } else if ("Pinpad_getSerialNo".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { String PinpadSN = iMate.Pinpad_getSerialNo(); if (PinpadSN == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success("{" + "\"PinpadSN\":\"" + PinpadSN + "\"" + "}"); } }); //? } else if ("Pinpad_DownloadMasterKey".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;masterKey")) { callbackContext.error("algorithm;masterIndex;masterKey??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); String masterKeyStr = json.getString("masterKey"); final byte[] masterKey = UtilTools.HexString2Bytes(masterKeyStr); cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_DownloadMasterKey(algorithm, masterIndex, masterKey, masterKey.length); if (ret != 0) callbackContext.error(iMate.getErrorString()); else callbackContext.success(); } }); // } else if ("Pinpad_DownloadWorkingKey".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;workingIndex;workingKey")) { callbackContext.error("algorithm;masterIndex;workingIndex;workingKey??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); final int workingIndex = json.getInt("workingIndex"); String workingKeyStr = json.getString("workingKey"); final byte[] workingKey = UtilTools.HexString2Bytes(workingKeyStr); cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_DownloadWorkingKey(algorithm, masterIndex, workingIndex, workingKey, workingKey.length); if (ret != 0) callbackContext.error(iMate.getErrorString()); else callbackContext.success(); } }); // } else if ("Pinpad_UpdateMasterKey".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;masterKey")) { callbackContext.error("algorithm;masterIndex;masterKey??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); String masterKeyStr = json.getString("masterKey"); final byte[] masterKey = UtilTools.HexString2Bytes(masterKeyStr); cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_UpdateMasterKey(algorithm, masterIndex, masterKey, masterKey.length); if (ret != 0) callbackContext.error(iMate.getErrorString()); else callbackContext.success(); } }); //MAC } else if ("Pinpad_DownloadMACKey".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;MackeyIndex;MacKey")) { callbackContext.error("algorithm;masterIndex;MackeyIndex;MacKey??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); final int MackeyIndex = json.getInt("MackeyIndex"); String MacKeyStr = json.getString("MacKey"); final byte[] MacKey = UtilTools.HexString2Bytes(MacKeyStr); cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_DownloadMACKey(algorithm, masterIndex, MackeyIndex, MacKey, MacKey.length); if (ret != 0) callbackContext.error(iMate.getErrorString()); else callbackContext.success(); } }); //?? } else if ("Pinpad_getPin".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;workingIndex;cardNo;pinLength;timeout")) { callbackContext .error("algorithm;masterIndex;workingIndex;cardNo;pinLength;timeout??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); final int workingIndex = json.getInt("workingIndex"); final String cardNo = json.getString("cardNo"); final int pinLength = json.getInt("pinLength"); final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { String pin = iMate.Pinpad_getPin(algorithm, true, masterIndex, workingIndex, cardNo, pinLength, timeout); if (pin == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success("{" + "\"Pin\":\"" + pin + "\"" + "}"); } }); //?? } else if ("Pinpad_getPlainPin".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "pinLength;timeout")) { callbackContext.error("pinLength;timeout??"); return true; } final int pinLength = json.getInt("pinLength"); final int timeout = json.getInt("timeout"); cordova.getThreadPool().execute(new Runnable() { public void run() { String PlainPin = iMate.Pinpad_getPlainPin(pinLength, timeout); if (PlainPin == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success("{" + "\"PlainPin\":\"" + PlainPin + "\"" + "}"); } }); // } else if ("Pinpad_Encrypt".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;workingIndex;cryptoMode;data")) { callbackContext.error("algorithm;masterIndex;workingIndex;cryptoMode;data??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); final int workingIndex = json.getInt("workingIndex"); final int cryptoMode = json.getInt("cryptoMode"); String dataStr = json.getString("data"); final byte[] data = UtilTools.HexString2Bytes(dataStr); cordova.getThreadPool().execute(new Runnable() { public void run() { byte[] resultBytes = iMate.Pinpad_Encrypt(algorithm, cryptoMode, masterIndex, workingIndex, data, data.length); if (resultBytes == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success( "{" + "\"outData\":\"" + UtilTools.Bytes2HexString(resultBytes) + "\"" + "}"); } }); //Mac } else if ("Pinpad_Mac".equalsIgnoreCase(action)) { if (!JsonObjectHasKeys(json, "algorithm;masterIndex;macIndex;data")) { callbackContext.error("algorithm;masterIndex;macIndex;data??"); return true; } final int algorithm = json.getInt("algorithm"); final int masterIndex = json.getInt("masterIndex"); final int macIndex = json.getInt("macIndex"); String dataStr = json.getString("data"); final byte[] data = dataStr.getBytes();// UTF-8 cordova.getThreadPool().execute(new Runnable() { public void run() { byte[] resultBytes = iMate.Pinpad_Mac(algorithm, masterIndex, macIndex, data, data.length); if (resultBytes == null) callbackContext.error(iMate.getErrorString()); else callbackContext.success( "{" + "\"outData\":\"" + UtilTools.Bytes2HexString(resultBytes) + "\"" + "}"); } }); //?? } else if ("Pinpad_PowerOff".equalsIgnoreCase(action)) { cordova.getThreadPool().execute(new Runnable() { public void run() { int ret = iMate.Pinpad_PowerOff(); if (ret == 0) callbackContext.success(); else callbackContext.error(iMate.getErrorString()); } }); } else if ("OpenBluetoothSocket".equalsIgnoreCase(action)) { iMate.resumeThread(); callbackContext.success(); } else if ("CloseBluetoothSocket".equalsIgnoreCase(action)) { iMate.pauseThread(); callbackContext.success(); } else if ("startSearchBLE".equalsIgnoreCase(action)) { callbackContext.success(); } else if ("stopSearchBLE".equalsIgnoreCase(action)) { callbackContext.success(); } else if ("bindDevice".equalsIgnoreCase(action)) { callbackContext.success(); } //pboc ?? return true; } public String readIdBmpAndToBASE64(String fileName) { String res = null; try { FileInputStream fin = new FileInputStream(fileName); int length = fin.available(); byte[] buffer = new byte[length]; fin.read(buffer); res = (Base64.encodeToString(buffer, Base64.NO_WRAP)).replace("\n", ""); fin.close(); } catch (Exception e) { e.printStackTrace(); } return res; } public boolean JsonObjectHasKeys(JSONObject json, String keysString) { String[] keys = keysString.split(";"); for (String string : keys) { if (!json.has(string)) return false; } return true; } public String getPbocHighError(int ErrorCode) { String message; switch (ErrorCode) { case 1: message = "?"; break; case 2: message = "?"; break; case 3: message = "?"; break; case 4: message = "??"; break; case 5: message = "???"; break; case 6: message = "?"; break; case 7: message = ""; break; default: message = ""; break; } return message; } }