import rx.functions.Action1;\r
\r
import static com.enqualcomm.support.Config.upload_logs_via_ftp;\r
+import static com.enqualcomm.support.Constants.ACTION_SMSCMD;\r
+import static com.enqualcomm.support.Constants.ACTION_SMSCMD_Reply;\r
+import static com.enqualcomm.support.Constants.ACTION_SMS_RECEIVED;\r
+import static com.enqualcomm.support.Constants.ACTION_START_FOTA_UPDATE;\r
import static com.enqualcomm.support.Constants.DIALOG_ACTION;\r
+import static com.enqualcomm.support.Constants.KeyReplyData;\r
import static com.enqualcomm.support.Constants.contact;\r
import static com.enqualcomm.support.utils.DeviceInfoUtil.getDeviceVersion;\r
import static com.enqualcomm.support.utils.SimSignalUtil.send_at_cmd;\r
import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei1;\r
\r
\r
-public class ICSmsManager {\r
- private static String ACTION_SMSCMD="com.enqualcomm.support.SMSCMD";\r
- private static String ACTION_SMSCMD_Reply="com.ic.action.fotaUpdateReply";\r
- private static String KeyReplyData="reply";\r
+public class ICSmsManager extends BroadcastReceiver{\r
+\r
private static String cell_number_to_reply=""; //this number is use for ACTION_SMSCMD_Reply\r
- private static String ACTION_START_FOTA_UPDATE="com.ic.action.startfotaUpdate";\r
+\r
private static long preTimeMillis;\r
private Context mContext = null;\r
Runtime runtime;\r
- ICSmsManager.SmsReceiver smsReceiver;\r
\r
ReplayLocation replayLocation=new ReplayLocation();\r
+\r
+ @Override\r
+ public void onReceive(Context context, Intent intent) {\r
+\r
+\r
+ String action = intent.getAction();\r
+ if (ACTION_SMSCMD.equals(action)) {\r
+ String cmd = intent.getStringExtra("smsCmd");\r
+ handleSMS_CMD("", cmd);\r
+ }else if (ACTION_SMSCMD_Reply.equals(action)){\r
+ String replydata=intent.getStringExtra(KeyReplyData);\r
+ sendSMS(cell_number_to_reply,replydata);\r
+ cell_number_to_reply="";\r
+ }else if (ACTION_SMS_RECEIVED.equals(action)) {\r
+ long currenttime = System.currentTimeMillis();\r
+ if (currenttime - ICSmsManager.preTimeMillis > 30000L) {\r
+ ICSmsManager.preTimeMillis = currenttime;\r
+ (new Thread(new Runnable() {\r
+ public void run() {\r
+ SystemClock.sleep(3000L);\r
+ if (intent == null || intent.getAction() == null) return;\r
+\r
+ //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。 \r
+ Object[] pduArray = (Object[]) intent.getExtras().get("pdus");\r
+ ICLogger.i("pdu number=" + pduArray.length);\r
+ String message = "";\r
+ String from = null;\r
+ for (int i = 0; i < pduArray.length; i++) {\r
+ SmsMessage sms = SmsMessage.createFromPdu((byte[]) pduArray[i]);//将PDU转换为SmsMessage格式\r
+ ICLogger.i("From : " + sms.getDisplayOriginatingAddress());\r
+ ICLogger.i("SMS : " + sms.getDisplayMessageBody());\r
+ from = sms.getDisplayOriginatingAddress();\r
+ message += sms.getDisplayMessageBody();\r
+ }\r
+ ICLogger.i("收到" + from + "短信:" + message);\r
+// Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show();\r
+ if (handleSMS_CMD(from, message) == false) {\r
+ //说明不是sms命令,提示短信接收。\r
+ ContextProxy.sendMsgBroadcast(context, message, 1);\r
+ }\r
+ }\r
+ })).start();\r
+ }\r
+ }\r
+\r
+ }\r
+\r
public class ReplayLocation implements LocationClient.LocationResponseUrl {\r
\r
@Override\r
public ICSmsManager( Runtime _runtime) {\r
this.runtime = _runtime;\r
this.mContext = runtime.getContextProxy().context;\r
- this.smsReceiver = new ICSmsManager.SmsReceiver();\r
-\r
- registerBroadReceiver();\r
}\r
\r
public void sendSMS(String phonenumber, String msg) {\r
context.sendBroadcast(intent);\r
\r
}\r
- public void registerBroadReceiver() {\r
-\r
- IntentFilter intentFilter = new IntentFilter();\r
- intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");\r
- intentFilter.setPriority(2147483647);\r
- this.mContext.registerReceiver(this.smsReceiver, intentFilter);\r
-\r
- intentFilter = new IntentFilter();\r
- intentFilter.addAction(ACTION_SMSCMD);\r
- intentFilter.addAction(ACTION_SMSCMD_Reply);\r
- (this.runtime.getContextProxy()).context.registerReceiver(this.mSMSCMD_BroadcastReceiver, intentFilter);\r
- }\r
\r
- public void unregisterBroadReceiver() {\r
- (this.runtime.getContextProxy()).context.unregisterReceiver(this.mSMSCMD_BroadcastReceiver);\r
- (this.runtime.getContextProxy()).context.unregisterReceiver(this.smsReceiver);\r
- }\r
\r
- private final BroadcastReceiver mSMSCMD_BroadcastReceiver = new BroadcastReceiver() {\r
- @Override\r
- public void onReceive(Context context, Intent intent) {\r
- String action = intent.getAction();\r
- if (ACTION_SMSCMD.equals(action)) {\r
- String cmd = intent.getStringExtra("smsCmd");\r
- handleSMS_CMD("", cmd);\r
- }else if (ACTION_SMSCMD_Reply.equals(action)){\r
- String replydata=intent.getStringExtra(KeyReplyData);\r
- sendSMS(cell_number_to_reply,replydata);\r
- cell_number_to_reply="";\r
- }\r
- }\r
- };\r
//1:短信设置服务器\r
//#ip#=198.11.183.28,5088#\r
//回复 ip set ok\r
}\r
\r
public void onReceive(Context context, Intent intent) {\r
- long currenttime = System.currentTimeMillis();\r
- if (currenttime - ICSmsManager.preTimeMillis > 30000L) {\r
- ICSmsManager.preTimeMillis = currenttime;\r
- (new Thread(new Runnable() {\r
- public void run() {\r
- SystemClock.sleep(3000L);\r
- if(intent == null || intent.getAction() == null ) return;\r
-\r
- //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。 \r
- Object[] pduArray = (Object[])intent.getExtras().get("pdus");\r
- ICLogger.i("pdu number=" + pduArray.length);\r
- String message = "";\r
- String from = null;\r
- for(int i = 0 ; i < pduArray.length; i ++){\r
- SmsMessage sms = SmsMessage.createFromPdu((byte[])pduArray[i]);//将PDU转换为SmsMessage格式\r
- ICLogger.i("From : " + sms.getDisplayOriginatingAddress());\r
- ICLogger.i("SMS : " + sms.getDisplayMessageBody());\r
- from = sms.getDisplayOriginatingAddress();\r
- message += sms.getDisplayMessageBody();\r
- }\r
- ICLogger.i("收到" + from + "短信:" + message);\r
-// Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show();\r
- if (handleSMS_CMD(from,message)==false){\r
- //说明不是sms命令,提示短信接收。\r
- ContextProxy.sendMsgBroadcast(context,message,1);\r
- }\r
- }\r
- })).start();\r
- }\r
\r
}\r
\r