From: TrillGates Date: Tue, 3 Aug 2021 09:47:03 +0000 (+0800) Subject: completed web sms cmd. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=d58e5100024ca20dcbcfc255fcf54103b1e1ee4a;p=protocol_srv.git completed web sms cmd. --- diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 6f7c1e94..e0557b33 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -13,7 +13,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.HandlerThread; -import android.os.Message; import android.os.SystemClock; import android.telephony.SmsMessage; import android.text.TextUtils; @@ -75,11 +74,10 @@ public class ICSmsManager extends BroadcastReceiver { private static long preTimeMillis; private Context mContext = null; Runtime runtime; - Handler mHandler; - ReplayLocation replayLocation = new ReplayLocation(); - private boolean needshowToast = false; + static ReplayLocation replayLocation; + private static boolean needShowToast = false; @Override public void onReceive(Context context, Intent intent) { @@ -103,7 +101,7 @@ public class ICSmsManager extends BroadcastReceiver { } else if (ACTION_SMSCMD_TEST.equals(action)) { String cmd = intent.getStringExtra("cmd"); String arg = intent.getStringExtra("arg1"); - handle_test_cmd(cmd, arg); + handle_test_cmd(runtime, mHandler, cmd, arg); } else if (ACTION_SMS_RECEIVED.equals(action)) { long currenttime = System.currentTimeMillis(); // if (currenttime - ICSmsManager.preTimeMillis > 30000L) { @@ -203,6 +201,7 @@ public class ICSmsManager extends BroadcastReceiver { public ICSmsManager(Runtime _runtime) { this.runtime = _runtime; this.mContext = runtime.getContextProxy().context; + replayLocation = new ReplayLocation(); IntentFilter intentfilter = new IntentFilter(); intentfilter.addAction(ACTION_SMSCMD_Reply); intentfilter.addAction(ACTION_SMS_RECEIVED); @@ -213,71 +212,72 @@ public class ICSmsManager extends BroadcastReceiver { // registerSmsDatabaseChangeObserver(mContext); HandlerThread handlerThread = new HandlerThread("ic:SMS-thread"); handlerThread.start(); - mHandler = new Handler(handlerThread.getLooper(), new Handler.Callback() { - @Override - public boolean handleMessage(Message message) { - switch (message.what) { - case 100: { - Bundle param = message.getData(); - if (param != null) { - String from = param.getString("SMSFrom"); - String smsmessage = param.getString("SMSData"); - long currenttime = System.currentTimeMillis(); - ICSmsManager.preTimeMillis = currenttime; - (new Thread(new Runnable() { - public void run() { - SystemClock.sleep(3000L); - ICLogger.i("收到" + from + "短信:" + smsmessage); - //以下是处理指令的 - //判断是否要弹窗,强制读取 - String forceReadMsg = Util.getSystemProperties("persist.sys.forcereadmsg"); - ICLogger.d("forceReadMsg == > " + forceReadMsg); - if (!handleSMS_CMD(from, smsmessage)) { - //说明不是sms命令,提示短信接收。 - if (!TextUtils.isEmpty(forceReadMsg)) { - WakeLockUtil.ScreenOnWakeLockTemperary(mContext); - ContextProxy.play_waning_notify(mContext); - VibrateUtil.getInstance(mContext).VibrateOnOnce(true); - Util.mSleep(2000); - - MsgMustReadDialog instance = MsgMustReadDialog.getInstance(); - instance.showMsgDialog(); - List list = new ArrayList<>(); - list.add(smsmessage); - instance.addData(list); - } else { - ContextProxy.sendMsgBroadcast(mContext, smsmessage, 1); - } + mHandler = new Handler(handlerThread.getLooper(), message -> { + switch (message.what) { + case 100: { + Bundle param = message.getData(); + if (param != null) { + String from = param.getString("SMSFrom"); + String smsmessage = param.getString("SMSData"); + long currenttime = System.currentTimeMillis(); + ICSmsManager.preTimeMillis = currenttime; + (new Thread(new Runnable() { + public void run() { + SystemClock.sleep(3000L); + ICLogger.i("收到" + from + "短信:" + smsmessage); + //以下是处理指令的 + //判断是否要弹窗,强制读取 + String forceReadMsg = Util.getSystemProperties("persist.sys.forcereadmsg"); + ICLogger.d("forceReadMsg == > " + forceReadMsg); + if (!handleSMS_CMD(from, smsmessage)) { + //说明不是sms命令,提示短信接收。 + if (!TextUtils.isEmpty(forceReadMsg)) { + WakeLockUtil.ScreenOnWakeLockTemperary(mContext); + ContextProxy.play_waning_notify(mContext); + VibrateUtil.getInstance(mContext).VibrateOnOnce(true); + Util.mSleep(2000); + + MsgMustReadDialog instance = MsgMustReadDialog.getInstance(); + instance.showMsgDialog(); + List list = new ArrayList<>(); + list.add(smsmessage); + instance.addData(list); + } else { + ContextProxy.sendMsgBroadcast(mContext, smsmessage, 1); } } - })).start(); - } + } + })).start(); } - break; - case 0: - sendSMS(cell_number_to_reply, "Upload Failed!"); - cell_number_to_reply = ""; - if (needshowToast) { - Util.ShowToast(runtime, "Upload cmd Failed!"); - needshowToast = false; - } - break; - - case 1: - sendSMS(cell_number_to_reply, "Upload success!"); - cell_number_to_reply = ""; - if (needshowToast) { - Util.ShowToast(runtime, "Upload cmd success!"); - needshowToast = false; - } - break; } - return false; + break; + case 0: + sendSMS(cell_number_to_reply, "Upload Failed!"); + cell_number_to_reply = ""; + if (needShowToast) { + Util.ShowToast(runtime, "Upload cmd Failed!"); + needShowToast = false; + } + break; + + case 1: + sendSMS(cell_number_to_reply, "Upload success!"); + cell_number_to_reply = ""; + if (needShowToast) { + Util.ShowToast(runtime, "Upload cmd success!"); + needShowToast = false; + } + break; } + return false; }); } - public void sendSMS(String phoneNumber, String msg) { + public static void sendSMS(String phoneNumber, String msg) { + if (TextUtils.isEmpty(phoneNumber)) { + ICLogger.d("phone number is null..."); + return; + } android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault(); Iterator msgit = smsManager.divideMessage(msg).iterator(); while (msgit.hasNext()) { @@ -294,7 +294,7 @@ public class ICSmsManager extends BroadcastReceiver { return true; } - private void broadCastStartFotaUpdate(Context context) { + private static void broadCastStartFotaUpdate(Context context) { Intent intent = new Intent(); intent.setAction(ACTION_START_FOTA_UPDATE); @@ -340,144 +340,169 @@ public class ICSmsManager extends BroadcastReceiver { /* * return false表示不是命令, true表示是命令,且已经执行 * */ - public boolean handleSMS_CMD(String phonenumber, String sms) { - if (isAdminNumber(phonenumber)) { - - String ENCRYPED_HEADER = Config.getSMSPwd(mContext); - if (ENCRYPED_HEADER.equals(Config.DefaultSMSPassword)) { - ENCRYPED_HEADER = ""; - } - + public boolean handleSMS_CMD(String phoneNumber, String sms) { + if (isAdminNumber(phoneNumber)) { if (sms == null || sms.trim().isEmpty()) return false; - ICLogger.i("received SMSCMD " + sms); sms = sms.trim(); - if (sms.equals(ENCRYPED_HEADER + "#logctl#=upload,all")) { - sms = ENCRYPED_HEADER + "#logctl#=upload,SDLog:Android/ic"; - } - //$HX,SSER,OK,91.201.4.79,5018,C,589883 - if (sms.startsWith(ENCRYPED_HEADER + "$HX,SSER,OK,")) { - String[] tmplist = sms.split(","); - if (tmplist.length == 7) { - String ServeriIp = tmplist[3]; - String ServerPort = tmplist[4]; - String imeiend = tmplist[6]; - if (runtime.IMEI().endsWith(imeiend)) { - sms = ENCRYPED_HEADER + "#IP#=" + ServeriIp + ":" + ServerPort + "#"; - ICLogger.i("收到客户自定义 服务器IP设置命令,转化为 #IP#命令!"); - } else { - sendSMS(phonenumber, imeiend + " IMEI 校验错误!"); - return true; - } + } + return handleSms(runtime, sms, phoneNumber, mHandler); + } + + /** + * phoneNumber可以为空 + * Handler可以为空 + * + * @param runtime + * @param sms + * @param phoneNumber + * @param handler + * @return + */ + public static boolean handleSms(Runtime runtime, String sms, String phoneNumber, Handler handler) { + Context mContext = runtime.getContextProxy().context; + String ENCRYPED_HEADER = Config.getSMSPwd(mContext); + if (ENCRYPED_HEADER.equals(Config.DefaultSMSPassword)) { + ENCRYPED_HEADER = ""; + } + + if (sms.equals(ENCRYPED_HEADER + "#logctl#=upload,all")) { + sms = ENCRYPED_HEADER + "#logctl#=upload,SDLog:Android/ic"; + } + //$HX,SSER,OK,91.201.4.79,5018,C,589883 + if (sms.startsWith(ENCRYPED_HEADER + "$HX,SSER,OK,")) { + String[] tmplist = sms.split(","); + if (tmplist.length == 7) { + String ServeriIp = tmplist[3]; + String ServerPort = tmplist[4]; + String imeiend = tmplist[6]; + if (runtime.IMEI().endsWith(imeiend)) { + sms = ENCRYPED_HEADER + "#IP#=" + ServeriIp + ":" + ServerPort + "#"; + ICLogger.i("收到客户自定义 服务器IP设置命令,转化为 #IP#命令!"); } else { - ICLogger.i(" 设置 Server IP 命令错误。"); - sendSMS(phonenumber, sms + " 格式错误!"); + sendSMS(phoneNumber, imeiend + " IMEI 校验错误!"); return true; } + } else { + ICLogger.i(" 设置 Server IP 命令错误。"); + sendSMS(phoneNumber, sms + " 格式错误!"); + return true; } - if (sms.startsWith(ENCRYPED_HEADER + "#apn#=") && sms.endsWith("#")) { - String[] tmp = sms.split("#"); - if (tmp.length == 3) { - String[] apnvalues = tmp[2].replace("=", "").split(","); - if (apnvalues.length == 4) { - String mcc = apnvalues[0]; - String mnc = apnvalues[1]; - String apnName = apnvalues[2]; - String apn = apnvalues[3]; - String user = ""; - String password = ""; - if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { - sendSMS(phonenumber, "apn add success!"); - } else { - sendSMS(phonenumber, "apn add failed!"); - } - } else if (apnvalues.length == 6) { - String mcc = apnvalues[0]; - String mnc = apnvalues[1]; - String apnName = apnvalues[2]; - String apn = apnvalues[3]; - String user = apnvalues[4]; - String password = apnvalues[5]; - if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { - sendSMS(phonenumber, "apn add success!"); - } else { - sendSMS(phonenumber, "apn add failed!"); - } - } else if (apnvalues.length == 1) { - if (apnvalues[0].equals("current")) { - - String apnstr = APNUtil.getCurrentAPN(mContext); - sendSMS(phonenumber, apnstr); - } else if (apnvalues[0].equals("reset")) { - boolean apnret = APNUtil.resetAPN(mContext); - sendSMS(phonenumber, "Reset APN to default " + apnret); - } else { - sendSMS(phonenumber, "apn cmd format error!"); - } + } + if (sms.startsWith(ENCRYPED_HEADER + "#apn#=") && sms.endsWith("#")) { + String[] tmp = sms.split("#"); + if (tmp.length == 3) { + String[] apnvalues = tmp[2].replace("=", "").split(","); + if (apnvalues.length == 4) { + String mcc = apnvalues[0]; + String mnc = apnvalues[1]; + String apnName = apnvalues[2]; + String apn = apnvalues[3]; + String user = ""; + String password = ""; + if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { + sendSMS(phoneNumber, "apn add success!"); + } else { + sendSMS(phoneNumber, "apn add failed!"); + } + } else if (apnvalues.length == 6) { + String mcc = apnvalues[0]; + String mnc = apnvalues[1]; + String apnName = apnvalues[2]; + String apn = apnvalues[3]; + String user = apnvalues[4]; + String password = apnvalues[5]; + if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { + sendSMS(phoneNumber, "apn add success!"); } else { - sendSMS(phonenumber, "apn cmd format error!"); + sendSMS(phoneNumber, "apn add failed!"); + } + } else if (apnvalues.length == 1) { + if (apnvalues[0].equals("current")) { + + String apnstr = APNUtil.getCurrentAPN(mContext); + sendSMS(phoneNumber, apnstr); + } else if (apnvalues[0].equals("reset")) { + boolean apnret = APNUtil.resetAPN(mContext); + sendSMS(phoneNumber, "Reset APN to default " + apnret); + } else { + sendSMS(phoneNumber, "apn cmd format error!"); } } else { + sendSMS(phoneNumber, "apn cmd format error!"); + } + } else { - sendSMS(phonenumber, "apn cmd format error!"); + sendSMS(phoneNumber, "apn cmd format error!"); - } - } else if (sms.startsWith(ENCRYPED_HEADER + "#deviceinfo#")) { + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#deviceinfo#")) { // ICLogger.i("SMS " + sms + " reply " + DeviceInfoUtil.getDeviceVersion(runtime)); // sendSMS(phonenumber, DeviceInfoUtil.getDeviceVersion(runtime)); - ICLogger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime)); - sendSMS(phonenumber, DeviceInfoUtil.getShortDeviceInfo(runtime)); - } else if (sms.startsWith(ENCRYPED_HEADER + "#status#")) { - String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName() + "\nBattery:" + runtime.getBattery() + "%"; - - ICLogger.i("SMS " + sms + " reply \n" + reply); - sendSMS(phonenumber, reply); - } else if (sms.startsWith(ENCRYPED_HEADER + "#atcmd#=")) { - String cmd = sms.substring(8); - ICLogger.i("atcmd " + cmd); - if (cmd.length() > 0) { - send_at_cmd(runtime, cmd); - sendSMS(phonenumber, "run At cmd " + cmd + "!"); - } else { - sendSMS(phonenumber, "At cmd empty error!"); - } - } else if (sms.startsWith(ENCRYPED_HEADER + "#imei:")) { - String imei = sms.substring(6); - ICLogger.i("SMS " + sms + " imei=" + imei); - if (imei.length() == 15) { - send_at_setImei0(runtime, imei); - Config.setIMEI(mContext, imei); - runtime.setImeiAndCid(imei, ""); - sendSMS(phonenumber, "set IMEI " + imei + " success !"); - CoreService.getInstance().disconnect_server(); - CoreService.getInstance().ReConnectToServer(); - } else if (imei.equals("reset")) { - Config.setIMEI(mContext, ""); - runtime.setImeiAndCid(PhoneUtils.getIMEI(mContext), ""); - sendSMS(phonenumber, "reset IMEI to " + PhoneUtils.getIMEI(mContext) + " success !"); + ICLogger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime)); + sendSMS(phoneNumber, DeviceInfoUtil.getShortDeviceInfo(runtime)); + } else if (sms.startsWith(ENCRYPED_HEADER + "#status#")) { + String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName() + "\nBattery:" + runtime.getBattery() + "%"; + + ICLogger.i("SMS " + sms + " reply \n" + reply); + sendSMS(phoneNumber, reply); + } else if (sms.startsWith(ENCRYPED_HEADER + "#atcmd#=")) { + String cmd = sms.substring(8); + ICLogger.i("atcmd " + cmd); + if (cmd.length() > 0) { + send_at_cmd(runtime, cmd); + sendSMS(phoneNumber, "run At cmd " + cmd + "!"); + } else { + sendSMS(phoneNumber, "At cmd empty error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#imei:")) { + String imei = sms.substring(6); + ICLogger.i("SMS " + sms + " imei=" + imei); + if (imei.length() == 15) { + send_at_setImei0(runtime, imei); + Config.setIMEI(mContext, imei); + runtime.setImeiAndCid(imei, ""); + sendSMS(phoneNumber, "set IMEI " + imei + " success !"); + CoreService.getInstance().disconnect_server(); + CoreService.getInstance().ReConnectToServer(); + } else if (imei.equals("reset")) { + Config.setIMEI(mContext, ""); + runtime.setImeiAndCid(PhoneUtils.getIMEI(mContext), ""); + sendSMS(phoneNumber, "reset IMEI to " + PhoneUtils.getIMEI(mContext) + " success !"); + CoreService.getInstance().disconnect_server(); + CoreService.getInstance().ReConnectToServer(); + } else if (imei.equals("current")) { + sendSMS(phoneNumber, "Current IMEI " + runtime.IMEI()); + } else { + sendSMS(phoneNumber, "set IMEI " + imei + " failed ! len!=15"); + } + } else if ((sms.startsWith(ENCRYPED_HEADER + "#ip#=") || sms.startsWith(ENCRYPED_HEADER + "#host#=")) && sms.endsWith("#")) { + String tmp[] = sms.split("="); + String reply = ""; + ICLogger.i(sms + " len " + tmp.length); + if (tmp.length == 2) { + if (tmp[1].equals("reset#")) { + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + reply = "reset ServerIP to " + protocolAPIHelper.getDefaultServerIP() + ":" + protocolAPIHelper.getDefaultServerPort() + " success! "; + Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); - } else if (imei.equals("current")) { - sendSMS(phonenumber, "Current IMEI " + runtime.IMEI()); + } else if (tmp[1].equals("current#")) { + reply = "current serverAddress:" + runtime.getHost() + ":" + runtime.getPort(); } else { - sendSMS(phonenumber, "set IMEI " + imei + " failed ! len!=15"); - } - } else if ((sms.startsWith(ENCRYPED_HEADER + "#ip#=") || sms.startsWith(ENCRYPED_HEADER + "#host#=")) && sms.endsWith("#")) { - String tmp[] = sms.split("="); - String reply = ""; - ICLogger.i(sms + " len " + tmp.length); - if (tmp.length == 2) { - if (tmp[1].equals("reset#")) { - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - reply = "reset ServerIP to " + protocolAPIHelper.getDefaultServerIP() + ":" + protocolAPIHelper.getDefaultServerPort() + " success! "; + //分析 以 , 为分界的格式 + String[] ipstr = tmp[1].split(","); + if (ipstr.length == 2) { + String ip = ipstr[0]; + int port = Integer.valueOf(ipstr[1].replace("#", "")); + Config.setCustomServer(mContext, true, ip, port); + reply = sms + " success! "; Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); - } else if (tmp[1].equals("current#")) { - reply = "current serverAddress:" + runtime.getHost() + ":" + runtime.getPort(); } else { - //分析 以 , 为分界的格式 - String[] ipstr = tmp[1].split(","); + //分析以 : 为分界的格式 + ipstr = tmp[1].split(":"); if (ipstr.length == 2) { String ip = ipstr[0]; int port = Integer.valueOf(ipstr[1].replace("#", "")); @@ -487,665 +512,624 @@ public class ICSmsManager extends BroadcastReceiver { CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); } else { - //分析以 : 为分界的格式 - ipstr = tmp[1].split(":"); - if (ipstr.length == 2) { - String ip = ipstr[0]; - int port = Integer.valueOf(ipstr[1].replace("#", "")); - Config.setCustomServer(mContext, true, ip, port); - reply = sms + " success! "; - Config.loadServerSettings(runtime); - CoreService.getInstance().disconnect_server(); - CoreService.getInstance().ReConnectToServer(); - } else { - reply = sms + " falied! "; - } + reply = sms + " falied! "; } } - } else { - reply = sms + " falied! "; } - sendSMS(phonenumber, reply); - } else if (sms.startsWith(ENCRYPED_HEADER + "#setlocation#=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("reset#")) { - Config.loadModCycleSettings(runtime);//恢复初始设置 - sendSMS(phonenumber, "reset to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); - } else { - String[] t = tmp[1].replace("#", "").split(","); - if (t.length == 2) { - int mod = 0; - int cycle = 0; - try { - mod = Integer.valueOf(t[0]); - cycle = Integer.valueOf(t[1]); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(), e); + } else { + reply = sms + " falied! "; + } + sendSMS(phoneNumber, reply); + } else if (sms.startsWith(ENCRYPED_HEADER + "#setlocation#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("reset#")) { + Config.loadModCycleSettings(runtime);//恢复初始设置 + sendSMS(phoneNumber, "reset to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); + } else { + String[] t = tmp[1].replace("#", "").split(","); + if (t.length == 2) { + int mod = 0; + int cycle = 0; + try { + mod = Integer.valueOf(t[0]); + cycle = Integer.valueOf(t[1]); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + if (mod > 0 && cycle >= 30) { + switch (mod) { + case ICLocation.NORMAL_MOD: + cycle = 60 * 15; + break; + case ICLocation.LOWPOWER_MOD: + cycle = 60 * 60; + break; + case ICLocation.REALTIME_MOD: + case ICLocation.EMERGNECY_MOD: + cycle = 60; + break; + case ICLocation.CUSTOM_MOD: + case ICLocation.CUSTOM_MOD8_GPS: + case ICLocation.CUSTOM_MOD8_WIFI: + break; + default: + sendSMS(phoneNumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!"); + return true; } - if (mod > 0 && cycle >= 30) { - switch (mod) { - case ICLocation.NORMAL_MOD: - cycle = 60 * 15; - break; - case ICLocation.LOWPOWER_MOD: - cycle = 60 * 60; - break; - case ICLocation.REALTIME_MOD: - case ICLocation.EMERGNECY_MOD: - cycle = 60; - break; - case ICLocation.CUSTOM_MOD: - case ICLocation.CUSTOM_MOD8_GPS: - case ICLocation.CUSTOM_MOD8_WIFI: - break; - default: - sendSMS(phonenumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!"); - return true; - } - LocationClient.setForceLocation(1); //短信设置的至少强制执行第一次定位。否则NORMAL_MOD和LOWPOWER_MOD如果没有运动就无法正常定位 - runtime.getLocationInstance().setLocation_cycle(cycle); - runtime.getLocationInstance().setWorkingMod(mod); - CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - if (mod == 4) { - CoreService.getInstance().setEmegencyLocationSTOPAlarm(5); - } - sendSMS(phonenumber, "set to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); - } else { - sendSMS(phonenumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!"); + LocationClient.setForceLocation(1); //短信设置的至少强制执行第一次定位。否则NORMAL_MOD和LOWPOWER_MOD如果没有运动就无法正常定位 + runtime.getLocationInstance().setLocation_cycle(cycle); + runtime.getLocationInstance().setWorkingMod(mod); + CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + if (mod == 4) { + CoreService.getInstance().setEmegencyLocationSTOPAlarm(5); } - + sendSMS(phoneNumber, "set to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); } else { - sendSMS(phonenumber, "setlocation format error!"); + sendSMS(phoneNumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!"); } - } - } else { - sendSMS(phonenumber, "setlocation format error!"); - } - - } else if (sms.startsWith(ENCRYPED_HEADER + "#skipmovecheck#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("current")) { - sendSMS(phonenumber, "SkipMoveCheck " + LocationClient.getSkipMoveCheck() + "!"); - } else if (tmp[1].equals("true")) { - LocationClient.setSkipMoveCheck(true); - sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); - } else if (tmp[1].equals("false")) { - LocationClient.setSkipMoveCheck(false); - sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); } else { - sendSMS(phonenumber, "skipmovecheck format error!"); + sendSMS(phoneNumber, "setlocation format error!"); } + } + + } else { + sendSMS(phoneNumber, "setlocation format error!"); + } + + } else if (sms.startsWith(ENCRYPED_HEADER + "#skipmovecheck#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("current")) { + sendSMS(phoneNumber, "SkipMoveCheck " + LocationClient.getSkipMoveCheck() + "!"); + } else if (tmp[1].equals("true")) { + LocationClient.setSkipMoveCheck(true); + sendSMS(phoneNumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); + } else if (tmp[1].equals("false")) { + LocationClient.setSkipMoveCheck(false); + sendSMS(phoneNumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); } else { - sendSMS(phonenumber, "skipmovecheck format error!"); + sendSMS(phoneNumber, "skipmovecheck format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER + "#wifictl#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("current")) { - sendSMS(phonenumber, "Current Wifi Setting SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); - } else if (tmp[1].equals("reset")) { - Config.setWiFiSSID(mContext, Config.DefaultWiFiSSID); - Config.setWiFiPasswd(mContext, Config.DefaultWiFiPWD); - sendSMS(phonenumber, "reset Wifi Setting to SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); - } else if (tmp[1].startsWith("connect,")) { - - String tmplist[] = tmp[1].split(","); - if (tmplist.length == 4) { - String SSID = tmplist[1]; - String PWD = tmplist[2]; - String encyptType = tmplist[3]; - Config.setWiFiSSID(mContext, SSID); - Config.setWiFiPasswd(mContext, PWD); - sendSMS(phonenumber, "set and connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); - //connect to wifi - mHandler.postDelayed(new Runnable() { + } else { + sendSMS(phoneNumber, "skipmovecheck format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#wifictl#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("current")) { + sendSMS(phoneNumber, "Current Wifi Setting SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); + } else if (tmp[1].equals("reset")) { + Config.setWiFiSSID(mContext, Config.DefaultWiFiSSID); + Config.setWiFiPasswd(mContext, Config.DefaultWiFiPWD); + sendSMS(phoneNumber, "reset Wifi Setting to SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); + } else if (tmp[1].startsWith("connect,")) { + + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 4) { + String SSID = tmplist[1]; + String PWD = tmplist[2]; + String encyptType = tmplist[3]; + Config.setWiFiSSID(mContext, SSID); + Config.setWiFiPasswd(mContext, PWD); + sendSMS(phoneNumber, "set and connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); + //connect to wifi + if (handler != null) { + handler.postDelayed(new Runnable() { @Override public void run() { Deliver.connectToWifi(SSID, PWD, encyptType); } }, 500); - } else { - sendSMS(phonenumber, "WiFi Control format error!"); } - } else if (tmp[1].startsWith("noTurnOffWhenScreenOff,")) { - - String tmplist[] = tmp[1].split(","); - if (tmplist.length == 2) { - String enabled = tmplist[1]; - boolean isenabled = enabled.toLowerCase().equals("true") ? true : false; - runtime.setNoTurnOffOnScreenOff(isenabled); - StringBuilder sb = new StringBuilder(); - if (isenabled && !Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { - Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); - sb.append(" Turn On Wifi first and "); - } - sb.append("set noTurnOffWhenScreenOff " + enabled); - sendSMS(phonenumber, sb.toString()); - } else { - sendSMS(phonenumber, "WiFi Control format error!"); + } else { + sendSMS(phoneNumber, "WiFi Control format error!"); + } + } else if (tmp[1].startsWith("noTurnOffWhenScreenOff,")) { + + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 2) { + String enabled = tmplist[1]; + boolean isenabled = enabled.toLowerCase().equals("true") ? true : false; + runtime.setNoTurnOffOnScreenOff(isenabled); + StringBuilder sb = new StringBuilder(); + if (isenabled && !Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); + sb.append(" Turn On Wifi first and "); } + sb.append("set noTurnOffWhenScreenOff " + enabled); + sendSMS(phoneNumber, sb.toString()); } else { - sendSMS(phonenumber, "WiFi Control format error!"); + sendSMS(phoneNumber, "WiFi Control format error!"); } } else { - sendSMS(phonenumber, "WiFi Control format error!"); + sendSMS(phoneNumber, "WiFi Control format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER + "#logctl#=")) { - - needshowToast = sms.contains("SDLogInfo:"); - cell_number_to_reply = phonenumber; - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("current")) { - sendSMS(phonenumber, "Current FtpLogServer " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - } else if (tmp[1].equals("reset")) { - - Config.setFtpServer(mContext, Config.DefaultLogFtpServer); - Config.setFtpUser(mContext, Config.DefaultLogFtpUser); - Config.setFtpPWD(mContext, Config.DefaultLogFtpPWD); - sendSMS(phonenumber, "reset FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - } else if (tmp[1].startsWith("upload,")) { - - String cmdl[] = tmp[1].split(","); - if (cmdl.length == 2) { - String logfile = cmdl[1]; - - if (!logfile.isEmpty() && (logfile.startsWith("SDLog:") || logfile.startsWith("SDLogInfo:"))) { - - String sdfilelist[] = logfile.split(":"); - if (sdfilelist.length == 2) { - String fileOrDir = sdfilelist[1]; - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - String filepath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + fileOrDir; - if (new File(filepath).exists()) { - Util.getDBFile(); - sendSMS(phonenumber, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); - - if (needshowToast) { - Util.ShowToast(runtime, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); - } - String logtime = TimeUtil.getSystemTime3(); - ICHttpUtil.uploadFile(filepath, runtime, logtime, mHandler); - } else { - sendSMS(phonenumber, filepath + " not exist !"); - if (needshowToast) { - Util.ShowToast(runtime, filepath + " not exist !"); - } + } else { + sendSMS(phoneNumber, "WiFi Control format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#logctl#=")) { + + needShowToast = sms.contains("SDLogInfo:"); + cell_number_to_reply = phoneNumber; + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("current")) { + sendSMS(phoneNumber, "Current FtpLogServer " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); + } else if (tmp[1].equals("reset")) { + + Config.setFtpServer(mContext, Config.DefaultLogFtpServer); + Config.setFtpUser(mContext, Config.DefaultLogFtpUser); + Config.setFtpPWD(mContext, Config.DefaultLogFtpPWD); + sendSMS(phoneNumber, "reset FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); + } else if (tmp[1].startsWith("upload,")) { + + String cmdl[] = tmp[1].split(","); + if (cmdl.length == 2) { + String logfile = cmdl[1]; + + if (!logfile.isEmpty() && (logfile.startsWith("SDLog:") || logfile.startsWith("SDLogInfo:"))) { + + String sdfilelist[] = logfile.split(":"); + if (sdfilelist.length == 2) { + String fileOrDir = sdfilelist[1]; + if (handler != null) { + handler.postDelayed(() -> { + String filepath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + fileOrDir; + if (new File(filepath).exists()) { + Util.getDBFile(); + sendSMS(phoneNumber, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); + + if (needShowToast) { + Util.ShowToast(runtime, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); + } + String logTime = TimeUtil.getSystemTime3(); + ICHttpUtil.uploadFile(filepath, runtime, logTime, handler); + } else { + sendSMS(phoneNumber, filepath + " not exist !"); + if (needShowToast) { + Util.ShowToast(runtime, filepath + " not exist !"); } } }, 500); - - } else { - sendSMS(phonenumber, " SDLog format error !"); } - } else { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - String filepath = Util.getLogfilePath(runtime, logfile); - if (Util.LogfileExist(runtime, logfile)) { - Util.getDBFile(); - sendSMS(phonenumber, "start Upload " + logfile + " to " + Config.getFtpServer(mContext) + " ..."); - String logtime = TimeUtil.getSystemTime3(); - ICHttpUtil.uploadFile(filepath, runtime, logtime, mHandler); - } else { - sendSMS(phonenumber, logfile + " not exist !"); - } - } - }, 500); - + sendSMS(phoneNumber, " SDLog format error !"); } } else { - sendSMS(phonenumber, "upload logfile format error!"); + if (handler != null) { + handler.postDelayed(() -> { + String filepath = Util.getLogfilePath(runtime, logfile); + if (Util.LogfileExist(runtime, logfile)) { + Util.getDBFile(); + sendSMS(phoneNumber, "start Upload " + logfile + " to " + Config.getFtpServer(mContext) + " ..."); + String logTime = TimeUtil.getSystemTime3(); + ICHttpUtil.uploadFile(filepath, runtime, logTime, handler); + } else { + sendSMS(phoneNumber, logfile + " not exist !"); + } + }, 500); + } } } else { - String cmdl[] = tmp[1].split(","); - if (cmdl.length == 3) { - Config.setFtpServer(mContext, cmdl[0]); - Config.setFtpUser(mContext, cmdl[1]); - Config.setFtpPWD(mContext, cmdl[2]); - sendSMS(phonenumber, "Set FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - - } else { - sendSMS(phonenumber, "set LogFtpServer format error! " + sms); - } + sendSMS(phoneNumber, "upload logfile format error!"); } + } else { - sendSMS(phonenumber, "set LogFtp ctl format error! " + sms); + String cmdl[] = tmp[1].split(","); + if (cmdl.length == 3) { + Config.setFtpServer(mContext, cmdl[0]); + Config.setFtpUser(mContext, cmdl[1]); + Config.setFtpPWD(mContext, cmdl[2]); + sendSMS(phoneNumber, "Set FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); + + } else { + sendSMS(phoneNumber, "set LogFtpServer format error! " + sms); + } } + } else { + sendSMS(phoneNumber, "set LogFtp ctl format error! " + sms); + } - } else if (sms.startsWith(ENCRYPED_HEADER + "#TP#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("getver")) { - if (Util.is_FT6236U_upgrade_firmware_support()) { - Util.FT6236U_getVer(); - String ver = Util.FT6236U_getVer(); - sendSMS(phonenumber, " Current FT6236U Firmware Version is " + ver + "!"); - } else { - sendSMS(phonenumber, " system Not Support FT6236U upgrade Firmware!"); - } - } else if (tmp[1].equals("upgrade")) { - if (Util.is_FT6236U_upgrade_firmware_support()) { - Util.FT6236U_getVer(); - String ver = Util.FT6236U_getVer(); - if (ver.startsWith("A1")) { - if (Util.FT6236U_upgrade_firmware()) { - Util.FT6236U_getVer(); - ver = Util.FT6236U_getVer(); - sendSMS(phonenumber, " Current FT6236U Firmware Version is " + ver + "!"); - } else { - sendSMS(phonenumber, " FT6236U Firmware upgrade failed !"); - } + } else if (sms.startsWith(ENCRYPED_HEADER + "#TP#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("getver")) { + if (Util.is_FT6236U_upgrade_firmware_support()) { + Util.FT6236U_getVer(); + String ver = Util.FT6236U_getVer(); + sendSMS(phoneNumber, " Current FT6236U Firmware Version is " + ver + "!"); + } else { + sendSMS(phoneNumber, " system Not Support FT6236U upgrade Firmware!"); + } + } else if (tmp[1].equals("upgrade")) { + if (Util.is_FT6236U_upgrade_firmware_support()) { + Util.FT6236U_getVer(); + String ver = Util.FT6236U_getVer(); + if (ver.startsWith("A1")) { + if (Util.FT6236U_upgrade_firmware()) { + Util.FT6236U_getVer(); + ver = Util.FT6236U_getVer(); + sendSMS(phoneNumber, " Current FT6236U Firmware Version is " + ver + "!"); } else { - sendSMS(phonenumber, " FT6236U current Firmware version is " + ver + " , upgrade only support A1 to A3 !"); + sendSMS(phoneNumber, " FT6236U Firmware upgrade failed !"); } } else { - sendSMS(phonenumber, " system Not Support FT6236U upgrade Firmware!"); + sendSMS(phoneNumber, " FT6236U current Firmware version is " + ver + " , upgrade only support A1 to A3 !"); } } else { - sendSMS(phonenumber, "TP cmd format error!"); + sendSMS(phoneNumber, " system Not Support FT6236U upgrade Firmware!"); } } else { - sendSMS(phonenumber, "TP cmd format error!"); + sendSMS(phoneNumber, "TP cmd format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER + "#USB#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals("current")) { - String conf = Util.getSystemProperties("sys.usb.config"); - sendSMS(phonenumber, "Current USB config is " + conf + "!"); - } else if (tmp[1].equals("mtp") || tmp[1].equals("adb") || tmp[1].equals("mtp,adb") || tmp[1].equals("adb,mtp") || tmp[1].equals("none")) { - sendSMS(phonenumber, "Set USB config to " + tmp[1] + "!"); - Util.setSystemProperties("sys.usb.config", "none"); - - Util.setSystemProperties("sys.usb.config", tmp[1]); - } else { - sendSMS(phonenumber, "USB cmd format error only support current|adb|mtp|adb,mtp|mtp,adb|none !"); - } + } else { + sendSMS(phoneNumber, "TP cmd format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#USB#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("current")) { + String conf = Util.getSystemProperties("sys.usb.config"); + sendSMS(phoneNumber, "Current USB config is " + conf + "!"); + } else if (tmp[1].equals("mtp") || tmp[1].equals("adb") || tmp[1].equals("mtp,adb") || tmp[1].equals("adb,mtp") || tmp[1].equals("none")) { + sendSMS(phoneNumber, "Set USB config to " + tmp[1] + "!"); + Util.setSystemProperties("sys.usb.config", "none"); + + Util.setSystemProperties("sys.usb.config", tmp[1]); } else { - sendSMS(phonenumber, "USB cmd format error!"); + sendSMS(phoneNumber, "USB cmd format error only support current|adb|mtp|adb,mtp|mtp,adb|none !"); } + } else { + sendSMS(phoneNumber, "USB cmd format error!"); + } - } else if (sms.startsWith(ENCRYPED_HEADER + "#ShowInfo#")) { - Intent intent = new Intent(); - ComponentName var3 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.DeviceInfoActivity"); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - intent.setComponent(var3); - runtime.getContextProxy().context.startActivity(intent); - } else if (sms.startsWith(ENCRYPED_HEADER + "#FactoryResetCheckSim#")) { - sendSMS(phonenumber, "do FactoryResetCheckSim ok!"); - CoreService.DevliverStringMessage("FactoryResetCheckSim"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroffCheckSim#")) { - sendSMS(phonenumber, "do poweroffCheckSim ok!"); - CoreService.DevliverStringMessage("poweroffCheckSim"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#factoryreset#") || sms.startsWith(ENCRYPED_HEADER + "#reset#")) { - sendSMS(phonenumber, "do factoryreset ok!"); - CoreService.DevliverStringMessage("FactoryReset"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#reboot#")) { - sendSMS(phonenumber, "do reboot ok!"); - CoreService.DevliverStringMessage("Reboot"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroff#")) { - sendSMS(phonenumber, "do poweroff ok!"); - CoreService.DevliverStringMessage("poweroff"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#packagevers#")) { - sendSMS(phonenumber, DeviceInfoUtil.getPackageVersions(mContext)); - } else if (sms.startsWith(ENCRYPED_HEADER + "#getWeather#")) { - sendSMS(phonenumber, "do get Weather!"); - CoreService.DevliverStringMessage("getWeather"); - } else if (sms.startsWith(ENCRYPED_HEADER + "#showui#")) { - Util.setSystemProperties("persist.sys.debugprotocol", "true"); - Intent intent = new Intent(); + } else if (sms.startsWith(ENCRYPED_HEADER + "#ShowInfo#")) { + Intent intent = new Intent(); + ComponentName var3 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.DeviceInfoActivity"); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + intent.setComponent(var3); + runtime.getContextProxy().context.startActivity(intent); + } else if (sms.startsWith(ENCRYPED_HEADER + "#FactoryResetCheckSim#")) { + sendSMS(phoneNumber, "do FactoryResetCheckSim ok!"); + CoreService.DevliverStringMessage("FactoryResetCheckSim"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroffCheckSim#")) { + sendSMS(phoneNumber, "do poweroffCheckSim ok!"); + CoreService.DevliverStringMessage("poweroffCheckSim"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#factoryreset#") || sms.startsWith(ENCRYPED_HEADER + "#reset#")) { + sendSMS(phoneNumber, "do factoryreset ok!"); + CoreService.DevliverStringMessage("FactoryReset"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#reboot#")) { + sendSMS(phoneNumber, "do reboot ok!"); + CoreService.DevliverStringMessage("Reboot"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroff#")) { + sendSMS(phoneNumber, "do poweroff ok!"); + CoreService.DevliverStringMessage("poweroff"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#packagevers#")) { + sendSMS(phoneNumber, DeviceInfoUtil.getPackageVersions(mContext)); + } else if (sms.startsWith(ENCRYPED_HEADER + "#getWeather#")) { + sendSMS(phoneNumber, "do get Weather!"); + CoreService.DevliverStringMessage("getWeather"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#showui#")) { + Util.setSystemProperties("persist.sys.debugprotocol", "true"); + Intent intent = new Intent(); // intent.setClassName(MainActivity.class.getPackage().getName(),MainActivity.class.getName()); - intent.setClass(mContext, MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - } else if (sms.startsWith(ENCRYPED_HEADER + "#PW=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - if (tmp[1].equals(Config.DefaultSMSPassword + "#")) { - Config.setSMSPwd(mContext, Config.DefaultSMSPassword); - sendSMS(phonenumber, "Cancel SMS PW ok!"); - } else { - Config.setSMSPwd(mContext, tmp[1].replace("#", "")); - sendSMS(phonenumber, "SET SMS PW ok " + Config.getSMSPwd(mContext)); - } + intent.setClass(mContext, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } else if (sms.startsWith(ENCRYPED_HEADER + "#PW=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals(Config.DefaultSMSPassword + "#")) { + Config.setSMSPwd(mContext, Config.DefaultSMSPassword); + sendSMS(phoneNumber, "Cancel SMS PW ok!"); } else { - sendSMS(phonenumber, "set SMSCMD PWD format error!"); + Config.setSMSPwd(mContext, tmp[1].replace("#", "")); + sendSMS(phoneNumber, "SET SMS PW ok " + Config.getSMSPwd(mContext)); } - } else if (sms.startsWith(ENCRYPED_HEADER + "#sos=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String str_sosNums = tmp[1].replace("#", ""); - String[] soslist = str_sosNums.split(";"); - if (soslist.length >= 1 && soslist.length <= 3) { - String phNum1 = soslist[0]; - String phNum2 = ""; - String phNum3 = ""; - if (soslist.length > 1) phNum2 = soslist[1]; - if (soslist.length > 2) phNum3 = soslist[2]; - - ArrayList contactArray = new ArrayList(); - if (!phNum1.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); - if (!phNum2.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); - if (!phNum3.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); - - runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); - - sendSMS(phonenumber, "set SOS number ok!"); - - } else { - sendSMS(phonenumber, "set SOS number format Error!"); - } + } else { + sendSMS(phoneNumber, "set SMSCMD PWD format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#sos=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String str_sosNums = tmp[1].replace("#", ""); + String[] soslist = str_sosNums.split(";"); + if (soslist.length >= 1 && soslist.length <= 3) { + String phNum1 = soslist[0]; + String phNum2 = ""; + String phNum3 = ""; + if (soslist.length > 1) phNum2 = soslist[1]; + if (soslist.length > 2) phNum3 = soslist[2]; + + ArrayList contactArray = new ArrayList(); + if (!phNum1.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); + if (!phNum2.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); + if (!phNum3.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); + + runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); + + sendSMS(phoneNumber, "set SOS number ok!"); } else { - sendSMS(phonenumber, "set SMSCMD PWD format error!"); + sendSMS(phoneNumber, "set SOS number format Error!"); } - } else if (sms.equals(ENCRYPED_HEADER + "#listen#")) { - sendSMS(phonenumber, "start listen !"); -// CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber); - ICAudioManager.needMute = true; - mHandler.postDelayed(new Runnable() { + + } else { + sendSMS(phoneNumber, "set SMSCMD PWD format error!"); + } + } else if (sms.equals(ENCRYPED_HEADER + "#listen#")) { + sendSMS(phoneNumber, "start listen !"); + ICAudioManager.needMute = true; + if (handler != null) { + handler.postDelayed(new Runnable() { @Override public void run() { - SimSignalUtil.send_at_cmd(runtime, "atd" + phonenumber + ";"); + SimSignalUtil.send_at_cmd(runtime, "atd" + phoneNumber + ";"); } }, 2000); + } + } else if (sms.equals(ENCRYPED_HEADER + "#location#")) { - } else if (sms.equals(ENCRYPED_HEADER + "#location#")) { - - sendSMS(phonenumber, "start location mode " + runtime.getLocationInstance().getWorkingMod() + "!"); - cell_number_to_reply = phonenumber; - LocationClient locationClient = LocationClient.getInstance(); - if (locationClient != null) { - locationClient.setLocationResponse(replayLocation); - ICLogger.i("triggerLocationProcess "); - locationClient.triggerLocationProcess(); - } - } else if (sms.startsWith(ENCRYPED_HEADER + "#setLogSrv#=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String strtmp = tmp[1].replace("#", ""); - - if (strtmp.contains("/")) { - /* #setLogSrv#=http://icfota.snicker.com.cn:8089/UploadFile.jsp*/ - Config.setHttpLogServerUrl(mContext, strtmp); - sendSMS(phonenumber, "set setLogSrv to " + strtmp + "!"); - } else { - sendSMS(phonenumber, " setLogSrv cmd Format error!"); - } - - } else { - sendSMS(phonenumber, " setLogSrv cmd Format error!"); - } - } else if (sms.startsWith(ENCRYPED_HEADER + "#setFotaSrv#=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String strtmp = tmp[1].replace("#", ""); - Config.setFotaServerUrl(mContext, strtmp); - Util.setSystemProperties(Constants.PersistFotaServer2Url, strtmp); - sendSMS(phonenumber, "set setFotaSrv2 to " + strtmp + "!"); + sendSMS(phoneNumber, "start location mode " + runtime.getLocationInstance().getWorkingMod() + "!"); + cell_number_to_reply = phoneNumber; + LocationClient locationClient = LocationClient.getInstance(); + if (locationClient != null) { + locationClient.setLocationResponse(replayLocation); + ICLogger.i("triggerLocationProcess "); + locationClient.triggerLocationProcess(); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#setLogSrv#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String strtmp = tmp[1].replace("#", ""); + + if (strtmp.contains("/")) { + /* #setLogSrv#=http://icfota.snicker.com.cn:8089/UploadFile.jsp*/ + Config.setHttpLogServerUrl(mContext, strtmp); + sendSMS(phoneNumber, "set setLogSrv to " + strtmp + "!"); } else { - sendSMS(phonenumber, " setFotaSrv cmd Format error!"); + sendSMS(phoneNumber, " setLogSrv cmd Format error!"); } - } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdate#")) { - cell_number_to_reply = phonenumber; - broadCastStartFotaUpdate(mContext); - sendSMS(phonenumber, "start fota update !"); - } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdateWiFi#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String tmplist[] = tmp[1].split(","); - if (tmplist.length == 3) { - String SSID = tmplist[0]; - String PWD = tmplist[1]; - String encyptType = tmplist[2]; - Config.setWiFiSSID(mContext, SSID); - Config.setWiFiPasswd(mContext, PWD); - runtime.setNoTurnOffOnScreenOff(true); - StringBuilder sb = new StringBuilder(); - if (!Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { - Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); - } - sb.append("connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); - sb.append(" And start to Update"); - cell_number_to_reply = phonenumber; - sendSMS(phonenumber, sb.toString()); - //connect to wifi - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - Deliver.connectToWifi(SSID, PWD, encyptType); - broadCastStartFotaUpdate(mContext); - } + } else { + sendSMS(phoneNumber, " setLogSrv cmd Format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#setFotaSrv#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String strtmp = tmp[1].replace("#", ""); + Config.setFotaServerUrl(mContext, strtmp); + Util.setSystemProperties(Constants.PersistFotaServer2Url, strtmp); + sendSMS(phoneNumber, "set setFotaSrv2 to " + strtmp + "!"); + } else { + sendSMS(phoneNumber, " setFotaSrv cmd Format error!"); + } + } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdate#")) { + cell_number_to_reply = phoneNumber; + broadCastStartFotaUpdate(mContext); + sendSMS(phoneNumber, "start fota update !"); + } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdateWiFi#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 3) { + + String SSID = tmplist[0]; + String PWD = tmplist[1]; + String encyptType = tmplist[2]; + Config.setWiFiSSID(mContext, SSID); + Config.setWiFiPasswd(mContext, PWD); + runtime.setNoTurnOffOnScreenOff(true); + StringBuilder sb = new StringBuilder(); + if (!Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); + } + sb.append("connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); + sb.append(" And start to Update"); + cell_number_to_reply = phoneNumber; + sendSMS(phoneNumber, sb.toString()); + //connect to wifi + if (handler != null) { + handler.postDelayed(() -> { + Deliver.connectToWifi(SSID, PWD, encyptType); + broadCastStartFotaUpdate(mContext); }, 500); - } else { - sendSMS(phonenumber, "FotaUpdateWiFi Control format error!"); } } else { - sendSMS(phonenumber, "FotaUpdateWiFi Control format error!"); + sendSMS(phoneNumber, "FotaUpdateWiFi Control format error!"); } + } else { + sendSMS(phoneNumber, "FotaUpdateWiFi Control format error!"); + } - } else if (sms.startsWith(ENCRYPED_HEADER + "#nolocationcycle#=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String strtmp = tmp[1].replace("#", ""); - if (strtmp.equalsIgnoreCase("false")) { - Util.setSystemProperties("persist.sys.NoLocationCycle", "false"); - Config.getNoLocationCycleFlag(); - sendSMS(phonenumber, "set noLocationCycle false! and trigger one Location"); - LocationClient locationClient = LocationClient.getInstance(); - if (locationClient != null) { - ICLogger.i("triggerLocationProcess "); - locationClient.triggerLocationProcess(); - } - } else if (strtmp.equalsIgnoreCase("true")) { - Util.setSystemProperties("persist.sys.NoLocationCycle", "true"); - Config.getNoLocationCycleFlag(); - sendSMS(phonenumber, "set noLocationCycle true!"); - } else if (strtmp.equalsIgnoreCase("current")) { - sendSMS(phonenumber, "current noLocationCycle " + Config.getNoLocationCycleFlag() + "!"); - } else { - sendSMS(phonenumber, " nolocationcycle cmd Format error!"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#nolocationcycle#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String strtmp = tmp[1].replace("#", ""); + if (strtmp.equalsIgnoreCase("false")) { + Util.setSystemProperties("persist.sys.NoLocationCycle", "false"); + Config.getNoLocationCycleFlag(); + sendSMS(phoneNumber, "set noLocationCycle false! and trigger one Location"); + LocationClient locationClient = LocationClient.getInstance(); + if (locationClient != null) { + ICLogger.i("triggerLocationProcess "); + locationClient.triggerLocationProcess(); } + } else if (strtmp.equalsIgnoreCase("true")) { + Util.setSystemProperties("persist.sys.NoLocationCycle", "true"); + Config.getNoLocationCycleFlag(); + sendSMS(phoneNumber, "set noLocationCycle true!"); + } else if (strtmp.equalsIgnoreCase("current")) { + sendSMS(phoneNumber, "current noLocationCycle " + Config.getNoLocationCycleFlag() + "!"); } else { - sendSMS(phonenumber, " nolocationcycle cmd Format error!"); + sendSMS(phoneNumber, " nolocationcycle cmd Format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER + "#setprotocol#=") && sms.endsWith("#")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String strtmp = tmp[1].replace("#", ""); - if (strtmp.equalsIgnoreCase("beehome")) { - if (Config.protocol_no != Config.PROTOCOL_BEEHOME) { - Util.setSystemProperties("persist.sys.protocol_no", "1"); - Config.getProtocolNumber(); - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to Beehome Protocol! device will reboot later !"); - CoreService.DevliverStringMessage("Reboot"); + } else { + sendSMS(phoneNumber, " nolocationcycle cmd Format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#setprotocol#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String strtmp = tmp[1].replace("#", ""); + if (strtmp.equalsIgnoreCase("beehome")) { + if (Config.protocol_no != Config.PROTOCOL_BEEHOME) { + Util.setSystemProperties("persist.sys.protocol_no", "1"); + Config.getProtocolNumber(); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to Beehome Protocol! device will reboot later !"); + CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - } else { - sendSMS(phonenumber, "current is Beehome Protocol!"); - } + } else { + sendSMS(phoneNumber, "current is Beehome Protocol!"); + } - } else if (strtmp.equalsIgnoreCase("jiai")) { - if (Config.protocol_no != Config.PROTOCOL_JIAI) { - Util.setSystemProperties("persist.sys.protocol_no", "0"); - Config.getProtocolNumber(); - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to JiAi Protocol! device will reboot later !"); - CoreService.DevliverStringMessage("Reboot"); + } else if (strtmp.equalsIgnoreCase("jiai")) { + if (Config.protocol_no != Config.PROTOCOL_JIAI) { + Util.setSystemProperties("persist.sys.protocol_no", "0"); + Config.getProtocolNumber(); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to JiAi Protocol! device will reboot later !"); + CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - } else { - sendSMS(phonenumber, "current is JiAi Protocol!"); - } - } else if (strtmp.equalsIgnoreCase("ic")) { - if (Config.protocol_no != Config.PROTOCOL_IC) { - Util.setSystemProperties("persist.sys.protocol_no", "2"); - Config.getProtocolNumber(); - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to IC Protocol! device will reboot later !"); - CoreService.DevliverStringMessage("Reboot"); + } else { + sendSMS(phoneNumber, "current is JiAi Protocol!"); + } + } else if (strtmp.equalsIgnoreCase("ic")) { + if (Config.protocol_no != Config.PROTOCOL_IC) { + Util.setSystemProperties("persist.sys.protocol_no", "2"); + Config.getProtocolNumber(); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to IC Protocol! device will reboot later !"); + CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - } else { - sendSMS(phonenumber, "current is IC Protocol!"); - } - } else if (strtmp.equalsIgnoreCase("fzd")) { - if (Config.protocol_no != Config.PROTOCOL_FZD) { - Util.setSystemProperties("persist.sys.protocol_no", "3"); - Config.getProtocolNumber(); - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to fzd Protocol! device will reboot later !"); - CoreService.DevliverStringMessage("Reboot"); + } else { + sendSMS(phoneNumber, "current is IC Protocol!"); + } + } else if (strtmp.equalsIgnoreCase("fzd")) { + if (Config.protocol_no != Config.PROTOCOL_FZD) { + Util.setSystemProperties("persist.sys.protocol_no", "3"); + Config.getProtocolNumber(); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to fzd Protocol! device will reboot later !"); + CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - } else { - sendSMS(phonenumber, "current is fzd Protocol!"); - } - } else if (strtmp.equalsIgnoreCase("mqtt")) { - if (Config.protocol_no != Config.PROTOCOL_MQTT) { - Util.setSystemProperties("persist.sys.protocol_no", "4"); - Config.getProtocolNumber(); - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to mqtt Protocol! device will reboot later !"); - CoreService.DevliverStringMessage("Reboot"); + } else { + sendSMS(phoneNumber, "current is fzd Protocol!"); + } + } else if (strtmp.equalsIgnoreCase("mqtt")) { + if (Config.protocol_no != Config.PROTOCOL_MQTT) { + Util.setSystemProperties("persist.sys.protocol_no", "4"); + Config.getProtocolNumber(); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to mqtt Protocol! device will reboot later !"); + CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - } else { - sendSMS(phonenumber, "current is mqtt Protocol!"); - } - } else if (TextUtils.isDigitsOnly(strtmp)) { - int protocolno = Integer.parseInt(strtmp); - switch (protocolno) { - case 0: - case 1: - case 2: - case 3: - case 4: - Util.setSystemProperties("persist.sys.protocol_no", strtmp); - Config.getProtocolNumber(); - Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to Protocol" + protocolno + "! \r\nYou may also need to set server ip for this protocol !\r\n May need reboot device too."); - CoreService.getInstance().disconnect_server(); - CoreService.getInstance().ReConnectToServer(); - break; - default: - sendSMS(phonenumber, "setprotocol only support Protocol 0/1/2/3/4 by now! "); - break; - } - } else { - sendSMS(phonenumber, " only support protocol jiAi , ic , beehome , fzd , mqtt !"); + sendSMS(phoneNumber, "current is mqtt Protocol!"); } + } else if (TextUtils.isDigitsOnly(strtmp)) { + int protocolno = Integer.parseInt(strtmp); + switch (protocolno) { + case 0: + case 1: + case 2: + case 3: + case 4: + Util.setSystemProperties("persist.sys.protocol_no", strtmp); + Config.getProtocolNumber(); + Config.loadServerSettings(runtime); + sendSMS(phoneNumber, "set setprotocol to Protocol" + protocolno + "! \r\nYou may also need to set server ip for this protocol !\r\n May need reboot device too."); + CoreService.getInstance().disconnect_server(); + CoreService.getInstance().ReConnectToServer(); + break; + default: + sendSMS(phoneNumber, "setprotocol only support Protocol 0/1/2/3/4 by now! "); + break; + } + } else { - sendSMS(phonenumber, " setprotocol cmd Format error!"); + sendSMS(phoneNumber, " only support protocol jiAi , ic , beehome , fzd , mqtt !"); } + } else { + sendSMS(phoneNumber, " setprotocol cmd Format error!"); + } - } else if (sms.startsWith(ENCRYPED_HEADER + "#maillog#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String mailaddr = tmp[1]; - if (!mailaddr.contains("@")) { - sendSMS(phonenumber, "mail address error !"); - - } else { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - String logfile = ""; - String fileOrDir = "Android/ic"; - - Util.getDBFile(); - - logfile = Util.zipfiles(fileOrDir); - if (new File(logfile).exists()) { - - sendSMS(phonenumber, "mail " + fileOrDir + " to " + mailaddr + " ..."); - Util.ShowToast(runtime, "mail " + fileOrDir + " to " + mailaddr + " ..."); - - String logtime = TimeUtil.getSystemTime3(); - if (SendEmail.getInstance().sendLogViaMail(logfile, mailaddr, logtime)) { - sendSMS(phonenumber, "mail " + fileOrDir + " to " + mailaddr + " success!"); + } else if (sms.startsWith(ENCRYPED_HEADER + "#maillog#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String mailaddr = tmp[1]; + if (!mailaddr.contains("@")) { + sendSMS(phoneNumber, "mail address error !"); + } else { + if (handler != null) { + handler.postDelayed(() -> { + String logfile = ""; + String fileOrDir = "Android/ic"; + Util.getDBFile(); + logfile = Util.zipfiles(fileOrDir); + if (new File(logfile).exists()) { + sendSMS(phoneNumber, "mail " + fileOrDir + " to " + mailaddr + " ..."); + Util.ShowToast(runtime, "mail " + fileOrDir + " to " + mailaddr + " ..."); + String logtime = TimeUtil.getSystemTime3(); + if (SendEmail.getInstance().sendLogViaMail(logfile, mailaddr, logtime)) { + sendSMS(phoneNumber, "mail " + fileOrDir + " to " + mailaddr + " success!"); // Util.ShowToast(runtime,"mail " + fileOrDir + " to " + mailaddr + " success!"); - } else { - sendSMS(phonenumber, "mail " + fileOrDir + " to " + mailaddr + " failed!"); -// Util.ShowToast(runtime,"mail " + fileOrDir + " to " + mailaddr + " failed!"); - } - } else { - sendSMS(phonenumber, fileOrDir + " not exist !"); -// if (logfile.startsWith("SDLogInfo:")) { -// Util.ShowToast(runtime, fileOrDir + " not exist !"); -// } + sendSMS(phoneNumber, "mail " + fileOrDir + " to " + mailaddr + " failed!"); +// Util.ShowToast(runtime,"mail " + fileOrDir + " to " + mailaddr + " failed!"); } + } else { + sendSMS(phoneNumber, fileOrDir + " not exist !"); } - - }, 500); - } - -// sendSMS(phonenumber, "upload FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - - } else { - sendSMS(phonenumber, "upload logfile format error!"); - } - - - } else if (sms.startsWith(ENCRYPED_HEADER + "#capture#")) { - - mHandler.post(new Runnable() { - @Override - public void run() { - (new CameraUtil(mContext)).getPicture("capture" + TimeUtil.getSystemTime3()); - } - }); - - } else if (sms.startsWith(ENCRYPED_HEADER + "#monitor#")) { - - mHandler.post(() -> CoreService.getInstance().DevliverStringMessage("StartMonitor", "10")); - - - /*** - * }else if(sms.startsWith(ENCRYPED_HEADER+"#logctl#=")){ - * 。。。。。 - * 添加新命令道这里 - */ - - } else if (sms.startsWith(ENCRYPED_HEADER + "#testcmd#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String cmd = tmp[1]; - handle_test_cmd(cmd, ""); } } else { - return false; + sendSMS(phoneNumber, "upload logfile format error!"); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#capture#")) { + if (handler != null) { + handler.post(() -> (new CameraUtil(mContext)).getPicture("capture" + TimeUtil.getSystemTime3())); + } + } else if (sms.startsWith(ENCRYPED_HEADER + "#monitor#")) { + if (handler != null) { + handler.post(() -> CoreService.getInstance().DevliverStringMessage("StartMonitor", "10")); + } + /*** + * }else if(sms.startsWith(ENCRYPED_HEADER+"#logctl#=")){ + * 。。。。。 + * 添加新命令道这里 + */ + + } else if (sms.startsWith(ENCRYPED_HEADER + "#testcmd#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String cmd = tmp[1]; + handle_test_cmd(runtime, handler, cmd, ""); } - return true; } else { return false; } + return true; } public final Uri SMS_MESSAGE_URI = Uri.parse("content://sms"); @@ -1170,7 +1154,7 @@ public class ICSmsManager extends BroadcastReceiver { } - private void handle_test_cmd(String cmd, String arg) { + private static void handle_test_cmd(Runtime runtime, Handler handler, String cmd, String arg) { ICLogger.i("receive test Cmd " + cmd + " arg " + arg); if (cmd.startsWith("testDialog,")) { @@ -1205,12 +1189,9 @@ public class ICSmsManager extends BroadcastReceiver { if (CoreService.getInstance() != null) { SimSignalUtil.send_at_to_reset_simcard(runtime); //直接下此命令不能实现断网重连,所以干脆采用关闭网络再打开的方式。 SimSignalUtil.setAirMode(CoreService.getInstance(), "OpenAirplane"); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - SimSignalUtil.setAirMode(CoreService.getInstance(), "CloseAirplane"); - } - }, 5000); + if (handler != null) { + handler.postDelayed(() -> SimSignalUtil.setAirMode(CoreService.getInstance(), "CloseAirplane"), 5000); + } } } else if (cmd.startsWith("testCMDRecords")) { @@ -1265,8 +1246,7 @@ public class ICSmsManager extends BroadcastReceiver { String list[] = cmd.split(","); if (list.length == 2) { - - LanguageUtils.changeLanguageByIndex(mContext, list[1]); + LanguageUtils.changeLanguageByIndex(runtime.getContextProxy().context, list[1]); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java b/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java index 222c6d4d..c9eec883 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java @@ -1,12 +1,9 @@ package com.enqualcomm.support.utils; -import android.content.Context; import android.os.Environment; import android.os.Handler; -import android.util.Log; import com.enqualcomm.support.Config; -import com.sina.util.dnscache.net.ApacheHttpClientNetworkRequests; import com.enqualcomm.support.bean.Runtime; import java.io.DataInputStream; @@ -21,167 +18,163 @@ import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; import java.util.zip.ZipOutputStream; -import static android.content.ContentValues.TAG; - public class ICHttpUtil { - public static boolean uploadData(String filebuf, Runtime runtime, String logtime, Handler mhandler) { - String sdcard= Environment.getExternalStorageDirectory().getAbsolutePath(); - String filename=sdcard+File.separator+"tmp.txt"; - String zipfile=sdcard+File.separator+"tmp.zip"; - boolean compressSuccess=false; + public static boolean uploadData(String fileBuf, Runtime runtime, String logTime, Handler handler) { + String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath(); + String filename = sdcard + File.separator + "tmp.txt"; + String zipfile = sdcard + File.separator + "tmp.zip"; + boolean compressSuccess = false; try { - CheckedOutputStream out=new CheckedOutputStream(new FileOutputStream(filename),new CRC32()); - out.write(filebuf.getBytes()); + CheckedOutputStream out = new CheckedOutputStream(new FileOutputStream(filename), new CRC32()); + out.write(fileBuf.getBytes()); out.close(); - File srcfile=new File(filename); + File srcfile = new File(filename); if (Util.zipFile(srcfile, "", - new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile),new CRC32())) + new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile), new CRC32())) , filename)) { - compressSuccess=true; + compressSuccess = true; } srcfile.delete(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); - compressSuccess=false; + compressSuccess = false; } - if (compressSuccess==false) { + if (compressSuccess == false) { - if(mhandler!=null) - mhandler.sendEmptyMessage(0); + if (handler != null) + handler.sendEmptyMessage(0); return false; } - String serverurl= Config.getHttpLogServerUrl(runtime.getContextProxy().context); - String product=DeviceInfoUtil.getModule(); - String pkgver=DeviceInfoUtil.getSWVersionDisplayName(); - String imei=runtime.IMEI(); + String serverurl = Config.getHttpLogServerUrl(runtime.getContextProxy().context); + String product = DeviceInfoUtil.getModule(); + String pkgver = DeviceInfoUtil.getSWVersionDisplayName(); + String imei = runtime.IMEI(); //为了兼容之前的只设置ip和端口的设置方式 - String actionUrl = serverurl+"?product=" + product + "&pkgver="+ pkgver + "&imei="+ imei+"&logtime="+logtime; - ICLogger.i("url="+actionUrl+"\nfile="+zipfile); - return upLoadFile(actionUrl, new File(zipfile),mhandler); + String actionUrl = serverurl + "?product=" + product + "&pkgver=" + pkgver + "&imei=" + imei + "&logtime=" + logTime; + ICLogger.i("url=" + actionUrl + "\nfile=" + zipfile); + return upLoadFile(actionUrl, new File(zipfile), handler); } - public static boolean uploadFile(String filename, Runtime runtime, String logtime, Handler mhandler) { - String zipfile=filename; - boolean compressSuccess=false; + public static boolean uploadFile(String filename, Runtime runtime, String logTime, Handler handler) { + + String zipFile = filename; + boolean compressSuccess = false; try { - String sdcard= Environment.getExternalStorageDirectory().getAbsolutePath(); - File srcfile=new File(filename); - zipfile=sdcard+File.separator+srcfile.getName()+".zip"; - if (Util.zipFile(srcfile, "", - new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile),new CRC32())) - , filename)) { - compressSuccess=true; + String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath(); + File srcFile = new File(filename); + zipFile = sdcard + File.separator + srcFile.getName() + ".zip"; + if (Util.zipFile(srcFile, "", + new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipFile), new CRC32())) + , filename)) { + compressSuccess = true; } - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); - compressSuccess=false; + compressSuccess = false; } - if (compressSuccess==false) { - - if(mhandler!=null) - mhandler.sendEmptyMessage(0); + if (!compressSuccess) { + if (handler != null) { + handler.sendEmptyMessage(0); + } return false; } - String serverurl= Config.getHttpLogServerUrl(runtime.getContextProxy().context); - String product=DeviceInfoUtil.getModule(); - String pkgver=DeviceInfoUtil.getSWVersionDisplayName(); - String imei=runtime.IMEI(); + String serverurl = Config.getHttpLogServerUrl(runtime.getContextProxy().context); + String product = DeviceInfoUtil.getModule(); + String pkgver = DeviceInfoUtil.getSWVersionDisplayName(); + String imei = runtime.IMEI(); //为了兼容之前的只设置ip和端口的设置方式 - String actionUrl = serverurl+"?product=" + product + "&pkgver="+ pkgver + "&imei="+ imei+"&logtime="+logtime; - ICLogger.i("url="+actionUrl+"\nfile="+zipfile); - return upLoadFile(actionUrl, new File(zipfile),mhandler); + String actionUrl = serverurl + "?product=" + product + "&pkgver=" + pkgver + "&imei=" + imei + "&logtime=" + logTime; + ICLogger.i("url=" + actionUrl + "\nfile=" + zipFile); + return upLoadFile(actionUrl, new File(zipFile), handler); } - public static boolean upLoadFile(String url, File file, Handler mhandler) { - boolean result = false; - if (null == url || null == file || !file.exists() || file.length() < 1) { - if(mhandler!=null) - mhandler.sendEmptyMessage(0); - return false; + public static boolean upLoadFile(String url, File file, Handler handler) { + if (null == url || null == file || !file.exists() || file.length() < 1) { + if (handler != null) { + handler.sendEmptyMessage(0); } + return false; + } + new Thread(() -> { + try { + /** + * 第一部分 + */ + URL urlObj = new URL(url); + HttpURLConnection con = (HttpURLConnection) urlObj.openConnection(); + + /** + * 设置关键值 + */ + con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式 + con.setDoInput(true); + con.setDoOutput(true); + con.setUseCaches(false); // post方式不能使用缓存 + + // 设置请求头信息 + con.setRequestProperty("Connection", "Keep-Alive"); + con.setRequestProperty("Charset", "UTF-8"); + + // 设置边界 + String BOUNDARY = "----------" + System.currentTimeMillis(); + con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); + + // 请求正文信息 + + // 第一部分: + StringBuilder sb = new StringBuilder(); + sb.append("--"); // ////////必须多两道线 + sb.append(BOUNDARY); + sb.append("\r\n"); + sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n"); + sb.append("Content-Type:application/octet-stream\r\n\r\n"); + + byte[] head = sb.toString().getBytes("utf-8"); + + // 获得输出流 + OutputStream out = new DataOutputStream(con.getOutputStream()); + out.write(head); + + // 文件正文部分 + DataInputStream in = new DataInputStream(new FileInputStream(file)); + int bytes = 0; + byte[] bufferOut = new byte[1024]; + while ((bytes = in.read(bufferOut)) != -1) { + out.write(bufferOut, 0, bytes); + } + in.close(); + + // 结尾部分 + byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线 + out.write(foot); + out.flush(); + out.close(); + + int statusCode = con.getResponseCode(); + String msg = con.getResponseMessage(); + ICLogger.i(msg); + if (statusCode == 200) { + if (handler != null) { + handler.sendEmptyMessage(1); + } + } else { + if (handler != null) { + handler.sendEmptyMessage(0); + } + } - new Thread(new Runnable() { - @Override - public void run() { - try { - /** - * 第一部分 - */ - URL urlObj = new URL(url); - HttpURLConnection con = (HttpURLConnection) urlObj.openConnection(); - - /** - * 设置关键值 - */ - con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式 - con.setDoInput(true); - con.setDoOutput(true); - con.setUseCaches(false); // post方式不能使用缓存 - - // 设置请求头信息 - con.setRequestProperty("Connection", "Keep-Alive"); - con.setRequestProperty("Charset", "UTF-8"); - - // 设置边界 - String BOUNDARY = "----------" + System.currentTimeMillis(); - con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); - - // 请求正文信息 - - // 第一部分: - StringBuilder sb = new StringBuilder(); - sb.append("--"); // ////////必须多两道线 - sb.append(BOUNDARY); - sb.append("\r\n"); - sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n"); - sb.append("Content-Type:application/octet-stream\r\n\r\n"); - - byte[] head = sb.toString().getBytes("utf-8"); - - // 获得输出流 - OutputStream out = new DataOutputStream(con.getOutputStream()); - out.write(head); - - // 文件正文部分 - DataInputStream in = new DataInputStream(new FileInputStream(file)); - int bytes = 0; - byte[] bufferOut = new byte[1024]; - while ((bytes = in.read(bufferOut)) != -1) { - out.write(bufferOut, 0, bytes); - } - in.close(); - - // 结尾部分 - byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线 - out.write(foot); - out.flush(); - out.close(); - - int statusCode = con.getResponseCode(); - String msg = con.getResponseMessage(); - ICLogger.i(msg); - if (statusCode == 200) { - if(mhandler!=null) - mhandler.sendEmptyMessage(1); - }else - { - if(mhandler!=null) - mhandler.sendEmptyMessage(0); - } - - - } catch (Exception e) { - e.printStackTrace(); - if(mhandler!=null) - mhandler.sendEmptyMessage(0); - } + } catch (Exception e) { + e.printStackTrace(); + if (handler != null) { + handler.sendEmptyMessage(0); } - }).start(); + } + }).start(); return true; } diff --git a/app/src/main/java/com/ic/protocols/protocol_s123.java b/app/src/main/java/com/ic/protocols/protocol_s123.java index 1f2fc0fe..dcc38806 100644 --- a/app/src/main/java/com/ic/protocols/protocol_s123.java +++ b/app/src/main/java/com/ic/protocols/protocol_s123.java @@ -14,6 +14,7 @@ import android.text.TextUtils; import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; +import com.enqualcomm.support.ICSmsManager; import com.enqualcomm.support.R; import com.enqualcomm.support.bean.Alarm; import com.enqualcomm.support.bean.Contact; @@ -198,6 +199,8 @@ public class protocol_s123 { BP75,//闹钟, BPPH,//拨号功能开关 APPH, + BPSS,//短信命令 + APSS, UNKNOWN_CMD, } @@ -323,6 +326,8 @@ public class protocol_s123 { cmdMap.put(CMD_TYPE.APFX, "APFX"); cmdMap.put(CMD_TYPE.BPPH, "BPPH"); cmdMap.put(CMD_TYPE.APPH, "APPH"); + cmdMap.put(CMD_TYPE.BPSS, "BPSS"); + cmdMap.put(CMD_TYPE.APSS, "APSS"); } @@ -3376,7 +3381,11 @@ public class protocol_s123 { case BPPH: //收到服务器拨号功能开关 ICLogger.d("收到服务器拨号功能开关."); - handleBPPH(mConnection, mRuntime, cmd); + handleBPPH(cmd); + break; + case BPSS: + ICLogger.d("收到服务器短信指令."); + handleBPSS(cmd); break; case APTM: break; @@ -3483,28 +3492,59 @@ public class protocol_s123 { } return ret; + } + + /** + * 解析短信指令,解析出来以后走mms的路子 + * + * @param cmd + */ + private void handleBPSS(String cmd) { + if (cmd != null) { + String[] split = cmd.split(CMDSPLIT); + //IWBPSS,353456789012345,080835,%%logctl%%=upload,all%% + if (split.length >= 3) { + String id = split[2]; + //得到数据字符串 + int idIndex = cmd.indexOf(id); + String content = cmd.substring(idIndex + id.length() + 1); + content = content.replaceAll("%%", "#"); + //把这个消息转到短信的执行流程中去 + ICLogger.d("content == > " + content); + ICSmsManager.handleSms(mRuntime, content, null, null); + //回复 + responseWithId(cmdMap.get(CMD_TYPE.APSS), id); + } else { + ICLogger.d("handleBPSS==parse error==> " + cmd); + } + } + } + private void responseWithId(String cmd, String id) { + StringMessage stringMessage = genStringMessage(cmd, + new StringBuffer(CMDHEADER).append(cmd) + .append(CMDSPLIT).append(id) + .append(CMDEND).toString()); + mConnection.send(stringMessage); } + /** * 处理拨号开关,数据入库,进入拨号前要获取一下,是否可以拨号, * - * @param mConnection - * @param mRuntime - * @param cmd IWBPPH,353456789012345,080835,1# + * @param cmd IWBPPH,353456789012345,080835,1# */ - private void handleBPPH(Connection mConnection, Runtime mRuntime, String cmd) { + private void handleBPPH(String cmd) { //解析数据 String[] split = cmd.split(CMDSPLIT); if (split.length == 4) { try { String id = split[2]; String value = split[3]; - StringMessage apph = APPH(id); //更新数据库 updateSettingValue("is_dial_enable", value); //返回结果 - mConnection.send(apph); + responseWithId(cmdMap.get(CMD_TYPE.APPH), id); } catch (Exception e) { e.printStackTrace(); } @@ -3522,15 +3562,6 @@ public class protocol_s123 { resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values); } - public static StringMessage APPH(String id) { - //设备响应: IWAPS4,080835# - //080835:指令流水号 - return genStringMessage(cmdMap.get(CMD_TYPE.APPH), - new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APPH)) - .append(CMDSPLIT).append(id) - .append(CMDEND).toString()); - } - /** * 闹钟数据 *