-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":484,"versionName":"2008081221","enabled":true,"outputFile":"ICSer_V484_2008081221_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V484_2008081221_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":490,"versionName":"2008102058","enabled":true,"outputFile":"ICSer_V490_2008102058_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V490_2008102058_release.apk","properties":{}}]
\ No newline at end of file
import android.content.ComponentName;\r
import android.content.ContentResolver;\r
import android.content.Context;\r
+import android.content.ContextWrapper;\r
import android.content.Intent;\r
import android.content.IntentFilter;\r
import android.database.Cursor;\r
import android.net.Uri;\r
+import android.os.Bundle;\r
import android.os.Environment;\r
+import android.os.Handler;\r
+import android.os.Message;\r
import android.os.SystemClock;\r
import android.telephony.SmsManager;\r
import android.telephony.SmsMessage;\r
import com.enqualcomm.support.bean.ICLocation;\r
import com.enqualcomm.support.bean.Runtime;\r
import com.enqualcomm.support.service.Deliver;\r
+import com.enqualcomm.support.service.SmsDatabaseChaneObserver;\r
import com.enqualcomm.support.utils.APNUtil;\r
import com.enqualcomm.support.utils.CellInfoUtil;\r
import com.enqualcomm.support.utils.ContextProxy;\r
import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei1;\r
\r
\r
-public class ICSmsManager extends BroadcastReceiver{\r
+public class ICSmsManager extends BroadcastReceiver {\r
\r
private static String cell_number_to_reply=""; //this number is use for ACTION_SMSCMD_Reply\r
\r
private Context mContext = null;\r
Runtime runtime;\r
\r
+ Handler mHandler=new Handler(new Handler.Callback() {\r
+ @Override\r
+ public boolean handleMessage(Message message) {\r
+\r
+ if (message.what==100){\r
+\r
+ Bundle param = message.getData();\r
+ if (param!=null){\r
+\r
+ String from = param.getString("SMSFrom");\r
+ String smsmessage = param.getString("SMSData");\r
+\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
+ ICLogger.i("收到" + from + "短信:" + smsmessage);\r
+// Toast.makeText(context, "收到" + from + "短信:" + smsmessage, Toast.LENGTH_LONG).show();\r
+ if (handleSMS_CMD(from, smsmessage) == false) {\r
+ //说明不是sms命令,提示短信接收。\r
+ ContextProxy.sendMsgBroadcast(mContext, smsmessage, 1);\r
+ }\r
+ }\r
+ })).start();\r
+// }\r
+\r
+\r
+ }\r
+\r
+\r
+ }\r
+\r
+\r
+\r
+ return false;\r
+ }\r
+ });\r
+\r
ReplayLocation replayLocation=new ReplayLocation();\r
\r
@Override\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
+// if (currenttime - ICSmsManager.preTimeMillis > 30000L) {\r
ICSmsManager.preTimeMillis = currenttime;\r
(new Thread(new Runnable() {\r
public void run() {\r
}\r
}\r
})).start();\r
- }\r
+// }\r
}\r
\r
}\r
IntentFilter intentfilter=new IntentFilter();\r
intentfilter.addAction(ACTION_SMSCMD_Reply);\r
this.mContext.registerReceiver(this,intentfilter);\r
+// registerSmsDatabaseChangeObserver(mContext);\r
}\r
\r
public void sendSMS(String phonenumber, String msg) {\r
return false;\r
}\r
}\r
+ public final Uri SMS_MESSAGE_URI = Uri.parse("content://sms");\r
+ private SmsDatabaseChaneObserver mSmsDBChangeObserver;\r
+ private void registerSmsDatabaseChangeObserver(Context contextWrapper) {\r
+ //因为,某些机型修改rom导致没有getContentResolver\r
+ try {\r
+ mSmsDBChangeObserver = new SmsDatabaseChaneObserver(contextWrapper.getContentResolver(), mHandler);\r
+ contextWrapper.getContentResolver().registerContentObserver(SMS_MESSAGE_URI, true, mSmsDBChangeObserver);\r
+ } catch (Throwable b) {\r
+ }\r
+ }\r
\r
+ private void unregisterSmsDatabaseChangeObserver(Context contextWrapper) {\r
+ try {\r
+ contextWrapper.getContentResolver().unregisterContentObserver(mSmsDBChangeObserver);\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
}
\ No newline at end of file
}else {\r
timerPPG.shutdownNow();\r
timerPPG.purge();\r
+ ICJniUtils.disablePPG();\r
}\r
isTimerStarted=false;\r
}\r
- ICJniUtils.disablePPG();\r
+\r
releaseWakeLock();\r
}\r
\r
--- /dev/null
+package com.enqualcomm.support.service;\r
+\r
+import android.content.ContentResolver;\r
+import android.database.ContentObserver;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.text.TextUtils;\r
+\r
+import com.enqualcomm.support.utils.ICLogger;\r
+\r
+/**\r
+ * 数据库观察者\r
+ */\r
+public class SmsDatabaseChaneObserver extends ContentObserver {\r
+ // 只检查收件箱\r
+ public static final Uri MMSSMS_ALL_MESSAGE_URI = Uri.parse("content://sms/inbox");\r
+ public static final String SORT_FIELD_STRING = "_id asc"; // 排序\r
+ public static final String DB_FIELD_ID = "_id";\r
+ public static final String DB_FIELD_ADDRESS = "address";\r
+ public static final String DB_FIELD_PERSON = "person";\r
+ public static final String DB_FIELD_BODY = "body";\r
+ public static final String DB_FIELD_DATE = "date";\r
+ public static final String DB_FIELD_TYPE = "type";\r
+ public static final String DB_FIELD_THREAD_ID = "thread_id";\r
+ public static final String[] ALL_DB_FIELD_NAME = {\r
+ DB_FIELD_ID, DB_FIELD_ADDRESS, DB_FIELD_PERSON, DB_FIELD_BODY,\r
+ DB_FIELD_DATE, DB_FIELD_TYPE, DB_FIELD_THREAD_ID };\r
+ public static int mMessageCount = -1;\r
+\r
+ private static final long DELTA_TIME = 60 * 1000;\r
+ private ContentResolver mResolver;\r
+\r
+ private Handler mHandler=null;\r
+ public SmsDatabaseChaneObserver(ContentResolver resolver, Handler handler) {\r
+ super(handler);\r
+ mHandler=handler;\r
+ mResolver = resolver;\r
+ }\r
+\r
+ @Override\r
+ public void onChange(boolean selfChange) {\r
+ onReceiveSms();\r
+ }\r
+\r
+ private void onReceiveSms() {\r
+ Cursor cursor = null;\r
+ // 添加异常捕捉\r
+ try {\r
+ cursor = mResolver.query(MMSSMS_ALL_MESSAGE_URI, ALL_DB_FIELD_NAME,\r
+ null, null, SORT_FIELD_STRING);\r
+ final int count = cursor.getCount();\r
+ if (count <= mMessageCount) {\r
+ mMessageCount = count;\r
+ return;\r
+ }\r
+ // 发现收件箱的短信总数目比之前大就认为是刚接收到新短信---如果出现意外,请神保佑\r
+ // 同时认为id最大的那条记录为刚刚新加入的短信的id---这个大多数是这样的,发现不一样的情况的时候可能也要求神保佑了\r
+ mMessageCount = count;\r
+ if (cursor != null) {\r
+ cursor.moveToLast();\r
+ final long smsdate = Long.parseLong(cursor.getString(cursor.getColumnIndex(DB_FIELD_DATE)));\r
+ final long nowdate = System.currentTimeMillis();\r
+ // 如果当前时间和短信时间间隔超过60秒,认为这条短信无效\r
+ if (nowdate - smsdate > DELTA_TIME) {\r
+ return;\r
+ }\r
+ final String strAddress = cursor.getString(cursor.getColumnIndex(DB_FIELD_ADDRESS)); // 短信号码\r
+ final String strbody = cursor.getString(cursor.getColumnIndex(DB_FIELD_BODY)); // 在这里获取短信信息\r
+ final int smsid = cursor.getInt(cursor.getColumnIndex(DB_FIELD_ID));\r
+ if (TextUtils.isEmpty(strAddress) || TextUtils.isEmpty(strbody)) {\r
+ return;\r
+ }\r
+ // 得到短信号码和内容之后进行相关处理\r
+ if(mHandler!=null) {\r
+ Message msg=new Message();\r
+ Bundle msgdata=new Bundle();\r
+ msgdata.putString("SMSFrom",strAddress);\r
+ msgdata.putString("SMSData",strbody);\r
+ msg.what=100;\r
+ msg.setData(msgdata);\r
+ mHandler.sendMessage(msg);\r
+\r
+ }\r
+ ICLogger.i("Database 收到" + strAddress + "短信:" + strbody);\r
+\r
+ }\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ } finally {\r
+ if (cursor != null) {\r
+ try { // 有可能cursor都没有创建成功\r
+ cursor.close();\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ }\r
+}
\ No newline at end of file
}\r
\r
Intent intent = new Intent("action.ic.srvPushTxt");\r
- intent.putExtra("msgType", 0); //0 代表 server下发消息,1代表 SMS消息\r
+ intent.putExtra("msgType", 1); //0 代表 server下发消息,1代表 SMS消息\r
intent.putExtra("txtMsg", msg);\r
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);\r
_context.sendBroadcast(intent);\r
-#Mon Aug 10 19:20:04 CST 2020\r
-VERSION_CODE=489\r
+#Mon Aug 10 20:58:05 CST 2020\r
+VERSION_CODE=490\r