\r
import java.util.ArrayList;\r
import java.util.Iterator;\r
+import java.util.concurrent.TimeUnit;\r
\r
import chestnut.utils.PhoneUtils;\r
+import rx.Observable;\r
+import rx.functions.Action1;\r
+\r
+import static com.enqualcomm.support.Constants.DIALOG_ACTION;\r
\r
\r
public class ICSmsManager {\r
//回复\r
//IMEI: 353503535035350\r
//SW: L02_20200208_V1\r
- public void handleSMS_CMD(String phonenumber, String sms){\r
+ public boolean handleSMS_CMD(String phonenumber, String sms){\r
if (isAdminNumber(phonenumber)) {\r
\r
- if (sms==null || sms.isEmpty()) return ;\r
-\r
- if (sms.startsWith("#apn#=")&& sms.endsWith("#")){\r
- String[] tmp=sms.split("#");\r
- if(tmp.length==3) {\r
- String[] apnvalues= tmp[2].replace("=","").split(",");\r
- if (apnvalues.length==4){\r
- String mcc=apnvalues[0];\r
- String mnc=apnvalues[1];\r
- String apnName=apnvalues[2];\r
- String apn=apnvalues[3];\r
- String user="";\r
- String password="";\r
- if(APNUtil.addVPN(mcc,mnc,apnName,apn,user,password,mContext)==true){\r
- sendSMS(phonenumber,"apn add success!");\r
- }else{\r
- sendSMS(phonenumber,"apn add failed!");\r
+ if (sms == null || sms.isEmpty()) return false;\r
+\r
+ if (sms.startsWith("#apn#=") && sms.endsWith("#")) {\r
+ String[] tmp = sms.split("#");\r
+ if (tmp.length == 3) {\r
+ String[] apnvalues = tmp[2].replace("=", "").split(",");\r
+ if (apnvalues.length == 4) {\r
+ String mcc = apnvalues[0];\r
+ String mnc = apnvalues[1];\r
+ String apnName = apnvalues[2];\r
+ String apn = apnvalues[3];\r
+ String user = "";\r
+ String password = "";\r
+ if (APNUtil.addVPN(mcc, mnc, apnName, apn, user, password, mContext) == true) {\r
+ sendSMS(phonenumber, "apn add success!");\r
+ } else {\r
+ sendSMS(phonenumber, "apn add failed!");\r
}\r
- }else if (apnvalues.length==6) {\r
- String mcc=apnvalues[0];\r
- String mnc=apnvalues[1];\r
- String apnName=apnvalues[2];\r
- String apn=apnvalues[3];\r
- String user=apnvalues[4];\r
- String password=apnvalues[5];\r
- if(APNUtil.addVPN(mcc,mnc,apnName,apn,user,password,mContext)==true){\r
- sendSMS(phonenumber,"apn add success!");\r
- }else{\r
- sendSMS(phonenumber,"apn add failed!");\r
+ } else if (apnvalues.length == 6) {\r
+ String mcc = apnvalues[0];\r
+ String mnc = apnvalues[1];\r
+ String apnName = apnvalues[2];\r
+ String apn = apnvalues[3];\r
+ String user = apnvalues[4];\r
+ String password = apnvalues[5];\r
+ if (APNUtil.addVPN(mcc, mnc, apnName, apn, user, password, mContext) == true) {\r
+ sendSMS(phonenumber, "apn add success!");\r
+ } else {\r
+ sendSMS(phonenumber, "apn add failed!");\r
}\r
- }else if (apnvalues.length==1){\r
+ } else if (apnvalues.length == 1) {\r
if (apnvalues[0].equals("current")) {\r
\r
String apnstr = APNUtil.getCurrentAPN(mContext);\r
sendSMS(phonenumber, apnstr);\r
- }else{\r
- sendSMS(phonenumber,"apn cmd format error!");\r
+ } else {\r
+ sendSMS(phonenumber, "apn cmd format error!");\r
}\r
- } else{\r
- sendSMS(phonenumber,"apn cmd format error!");\r
+ } else {\r
+ sendSMS(phonenumber, "apn cmd format error!");\r
}\r
- }else {\r
+ } else {\r
\r
- sendSMS(phonenumber,"apn cmd format error!");\r
+ sendSMS(phonenumber, "apn cmd format error!");\r
\r
}\r
- }else if (sms.startsWith("#deviceinfo#")) {\r
- Logger.i("SMS "+sms+" reply "+DeviceInfoUtil.getShortDeviceInfo(runtime));\r
- sendSMS(phonenumber,DeviceInfoUtil.getShortDeviceInfo(runtime));\r
- }else if (sms.startsWith("#status#")) {\r
- String reply="IMEI="+runtime.IMEI()+"\nSW:"+DeviceInfoUtil.getVersionCode(mContext)+" "+DeviceInfoUtil.getSWVersionDisplayName();\r
- Logger.i("SMS "+sms+" reply \n"+reply);\r
- sendSMS(phonenumber,reply);\r
- }else if (sms.startsWith("#imei:")) {\r
- String imei=sms.substring(6);\r
- Logger.i("SMS "+sms+" imei="+imei);\r
- if (imei.length()==15 ) {\r
+ } else if (sms.startsWith("#deviceinfo#")) {\r
+ Logger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime));\r
+ sendSMS(phonenumber, DeviceInfoUtil.getShortDeviceInfo(runtime));\r
+ } else if (sms.startsWith("#status#")) {\r
+ String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName();\r
+ Logger.i("SMS " + sms + " reply \n" + reply);\r
+ sendSMS(phonenumber, reply);\r
+ } else if (sms.startsWith("#imei:")) {\r
+ String imei = sms.substring(6);\r
+ Logger.i("SMS " + sms + " imei=" + imei);\r
+ if (imei.length() == 15) {\r
Config.setIMEI(mContext, imei);\r
runtime.setImeiAndCid(imei, "");\r
sendSMS(phonenumber, "set IMEI " + imei + " sucess !");\r
CoreService.getInstance().disconnect_server();\r
CoreService.getInstance().ReConnectToServer();\r
- }else if (imei.equals("reset")) {\r
+ } else if (imei.equals("reset")) {\r
Config.setIMEI(mContext, "");\r
runtime.setImeiAndCid(PhoneUtils.getIMEI(mContext), "");\r
sendSMS(phonenumber, "reset IMEI to " + PhoneUtils.getIMEI(mContext) + " sucess !");\r
CoreService.getInstance().disconnect_server();\r
CoreService.getInstance().ReConnectToServer();\r
- }else if (imei.equals("current")) {\r
+ } else if (imei.equals("current")) {\r
sendSMS(phonenumber, "Current IMEI " + runtime.IMEI());\r
- }else{\r
+ } else {\r
sendSMS(phonenumber, "set IMEI " + imei + " failed ! len!=15");\r
}\r
- }else if (sms.startsWith("#ip#=") && sms.endsWith("#")) {\r
- String tmp[]=sms.split("=");\r
- String reply="";\r
- Logger.i(sms+" len "+tmp.length);\r
- if (tmp.length==2) {\r
+ } else if (sms.startsWith("#ip#=") && sms.endsWith("#")) {\r
+ String tmp[] = sms.split("=");\r
+ String reply = "";\r
+ Logger.i(sms + " len " + tmp.length);\r
+ if (tmp.length == 2) {\r
if (tmp[1].equals("reset#")) {\r
Config.setProtocolServerHost(mContext, Runtime.DefaultHost);\r
Config.setProtocolServerAddr(mContext, "", Runtime.DefaultPort);\r
}\r
}\r
}\r
- }else{\r
+ } else {\r
reply = sms + " falied! ";\r
}\r
sendSMS(phonenumber, reply);\r
- }else if (sms.startsWith("#setlocation#=")&& sms.endsWith("#")){\r
- String tmp[]=sms.split("=");\r
- if (tmp.length==2){\r
- if (tmp[1].equals("reset#")){\r
+ } else if (sms.startsWith("#setlocation#=") && sms.endsWith("#")) {\r
+ String tmp[] = sms.split("=");\r
+ if (tmp.length == 2) {\r
+ if (tmp[1].equals("reset#")) {\r
Config.loadModCycleSettings(runtime);//恢复初始设置\r
- sendSMS(phonenumber, "reset to Location Mode="+runtime.getLocationInstance().getWorkingMod()+", Cycle="+runtime.getLocationInstance().getLocation_cycle());\r
- }else {\r
- String[] t=tmp[1].replace("#","").split(",");\r
- if (t.length==2){\r
- int mod=0;\r
- int cycle=0;\r
+ sendSMS(phonenumber, "reset to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle());\r
+ } else {\r
+ String[] t = tmp[1].replace("#", "").split(",");\r
+ if (t.length == 2) {\r
+ int mod = 0;\r
+ int cycle = 0;\r
try {\r
mod = Integer.valueOf(t[0]);\r
cycle = Integer.valueOf(t[1]);\r
- }catch (Exception e){\r
+ } catch (Exception e) {\r
e.printStackTrace();\r
}\r
- if(mod<6&& mod>0 && cycle>=30 ){\r
- switch(mod){\r
+ if (mod < 6 && mod > 0 && cycle >= 30) {\r
+ switch (mod) {\r
case ICLocation.NORMAL_MOD:\r
- cycle=60*15;\r
+ cycle = 60 * 15;\r
break;\r
case ICLocation.LOWPOWER_MOD:\r
- cycle=60*60;\r
+ cycle = 60 * 60;\r
break;\r
case ICLocation.REALTIME_MOD:\r
case ICLocation.EMERGNECY_MOD:\r
- cycle=60;\r
+ cycle = 60;\r
break;\r
}\r
LocationClient.setForceLocation(1); //短信设置的至少强制执行第一次定位。否则NORMAL_MOD和LOWPOWER_MOD如果没有运动就无法正常定位\r
runtime.getLocationInstance().setLocation_cycle(cycle);\r
runtime.getLocationInstance().setWorkingMod(mod);\r
CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());\r
- if (mod == 4){\r
+ if (mod == 4) {\r
CoreService.getInstance().setEmegencyLocationSTOPAlarm(5);\r
}\r
- sendSMS(phonenumber, "set to Location Mode="+runtime.getLocationInstance().getWorkingMod()+", Cycle="+runtime.getLocationInstance().getLocation_cycle());\r
- }else{\r
+ sendSMS(phonenumber, "set to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle());\r
+ } else {\r
sendSMS(phonenumber, "set to Location Failed ,value range should be 1<= Mode <=5 and cycle >=30!");\r
}\r
\r
- }else{\r
+ } else {\r
sendSMS(phonenumber, "setlocation format error!");\r
}\r
}\r
\r
- }else{\r
+ } else {\r
sendSMS(phonenumber, "setlocation format error!");\r
}\r
\r
- }else if (sms.startsWith("#skipmovecheck#=")){\r
- String tmp[]=sms.split("=");\r
- if (tmp.length==2) {\r
+ } else if (sms.startsWith("#skipmovecheck#=")) {\r
+ String tmp[] = sms.split("=");\r
+ if (tmp.length == 2) {\r
if (tmp[1].equals("current")) {\r
- sendSMS(phonenumber, "SkipMoveCheck "+LocationClient.getSkipMoveCheck()+"!");\r
- }else if (tmp[1].equals("true")) {\r
+ sendSMS(phonenumber, "SkipMoveCheck " + LocationClient.getSkipMoveCheck() + "!");\r
+ } else if (tmp[1].equals("true")) {\r
LocationClient.setSkipMoveCheck(true);\r
- sendSMS(phonenumber, "set SkipMoveCheck "+LocationClient.getSkipMoveCheck()+" success!");\r
- }else if (tmp[1].equals("false")) {\r
+ sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!");\r
+ } else if (tmp[1].equals("false")) {\r
LocationClient.setSkipMoveCheck(false);\r
- sendSMS(phonenumber, "set SkipMoveCheck "+LocationClient.getSkipMoveCheck()+" success!");\r
- }else{\r
+ sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!");\r
+ } else {\r
sendSMS(phonenumber, "skipmovecheck format error!");\r
}\r
- }else{\r
+ } else {\r
sendSMS(phonenumber, "skipmovecheck format error!");\r
}\r
+ } else {\r
+ return false;\r
}\r
+ return true;\r
+ }else{\r
+ return false;\r
}\r
}\r
\r
}\r
Logger.i("收到" + from + "短信:" + message);\r
// Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show();\r
- handleSMS_CMD(from,message);\r
+ if (handleSMS_CMD(from,message)==false){\r
+ //说明不是sms命令,提示短信接收。\r
+\r
+ Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+ public void call(Long param1Long) {\r
+ Intent intent = new Intent();\r
+ intent.setAction(DIALOG_ACTION);\r
+ intent.putExtra("sms", "SMS");\r
+ context.sendBroadcast(intent);\r
+ }\r
+ });\r
+ }\r
}\r
})).start();\r
}\r
import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA;\r
import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START;\r
import static com.enqualcomm.support.Constants.ACTION_SEND_SOS_MSG;\r
+import static com.enqualcomm.support.Constants.DIALOG_ACTION;\r
import static com.enqualcomm.support.Constants.RESUME_ACTION;\r
import static com.enqualcomm.support.Constants.SOS_ACTION;\r
import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION;\r
private float y2 = 0.0F;\r
\r
private void initMyDialog(final Context context, final Contact contact, int app_id) {\r
- String var4 = contact.name;\r
+ String var4 = contact==null?"SMS":contact.name;\r
+\r
if (this.mDialog == null) {\r
this.mDialog = new CustomDialog.Builder(context);\r
}\r
\r
StringBuilder var5 = new StringBuilder();\r
- var5.append("===mCustomDialog");\r
- var5.append(mCustomDialog);\r
+ var5.append("===mCustomDialog ")\r
+ .append(mCustomDialog)\r
+ .append(" , appid ").append(app_id);\r
+\r
Logger.i(var5.toString());\r
if (mCustomDialog != null && mCustomDialog.isShowing() && last_message_name != null && var4 != null && last_message_name.equals(var4) && last_app_id == app_id) {\r
mCustomDialog.dismiss();\r
}).create();\r
mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);\r
mCustomDialog.show();\r
+ }else if (app_id ==3){\r
+ tmpDialog = this.mDialog.setTitle(context.getString(R.string.sms_title)).setApp(1);\r
+ StringBuilder var7 = new StringBuilder();\r
+ var7.append(context.getString(R.string.sms_notify));\r
+ mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton("确定", new DialogInterface.OnClickListener() {\r
+ public void onClick(DialogInterface var1, int var2) {\r
+ var1.dismiss();\r
+ ComponentName var3 = new ComponentName("com.zmapp.sms", "com.zmapp.sms.MainActivity");\r
+ Intent var5 = new Intent("android.intent.action.MAIN");\r
+ var5.addCategory("android.intent.category.DEFAULT");\r
+ var5.addFlags(FLAG_ACTIVITY_NEW_TASK);\r
+ var5.setComponent(var3);\r
+ try {\r
+ context.startActivity(var5);\r
+ } catch (Exception var4) {\r
+ var4.printStackTrace();\r
+ }\r
+ }\r
+ }).setNegativeButton("取消", new DialogInterface.OnClickListener() {\r
+ public void onClick(DialogInterface var1, int var2) {\r
+ var1.dismiss();\r
+ }\r
+ }).create();\r
+ mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);\r
+ mCustomDialog.show();\r
}\r
}\r
\r
\r
@Override\r
public void onReceive(Context paramContext, Intent paramIntent) {\r
+\r
+ boolean isSilence;\r
Contact contact;\r
String str = paramIntent.getAction();\r
StringBuilder stringBuilder = new StringBuilder();\r
(new CameraUtil(paramContext)).getPictur(str1);\r
return;\r
\r
- }\r
-\r
+ }else if (DIALOG_ACTION.equals(str)) {\r
+ if (paramIntent.hasExtra("contact")) {\r
+ contact = (Contact) paramIntent.getParcelableExtra("contact");\r
+ SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
+ isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+ if (contact != null && !isSilence) {\r
+ if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
+ this.initMyDialog(paramContext, contact, 1);\r
+ this.playNotificationVoice(paramContext);\r
+ }\r
\r
-\r
- boolean var5;\r
- if ("com.enqualcomm.support.DIALOG".equals(str)) {\r
- Contact var6 = (Contact)paramIntent.getParcelableExtra("contact");\r
- SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
- var5 = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
- if (var6 != null && !var5) {\r
- if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
- this.initMyDialog(paramContext, var6, 1);\r
- this.playNotificationVoice(paramContext);\r
+ this.screenOn(paramContext);\r
}\r
+ }else if (paramIntent.hasExtra("sms")) {\r
+ String sms = paramIntent.getStringExtra("sms");\r
+ SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
+ isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+ if (sms != null && !isSilence) {\r
+ if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
+ this.initMyDialog(paramContext, null, 3);\r
+ this.playNotificationVoice(paramContext);\r
+ }\r
\r
- this.screenOn(paramContext);\r
+ this.screenOn(paramContext);\r
+ }\r
}\r
} else if (!"com.enqualcomm.support.CloseUnreadMsg".equals(paramIntent.getAction()) && !"android.intent.action.BATTERY_LOW".equals(paramIntent.getAction())) {\r
if ("com.enqualcomm.support.ACTION_MISSED_CALL_GET".equals(str)) {\r
- Contact var8 = (Contact)paramIntent.getParcelableExtra("contact");\r
- var8.extra = paramIntent.getStringExtra("date");\r
- var5 = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
- if (var8 != null && !var5) {\r
- this.initMyDialog(paramContext, var8, 2);\r
+ contact = (Contact)paramIntent.getParcelableExtra("contact");\r
+ contact.extra = paramIntent.getStringExtra("date");\r
+ isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+ if (contact != null && !isSilence) {\r
+ this.initMyDialog(paramContext, contact, 2);\r
this.playNotificationVoice(paramContext);\r
this.screenOn(paramContext);\r
}\r