fixed sms notification issues.
authorTrillGates <williamtrillgates@gmail.com>
Mon, 23 Aug 2021 11:43:48 +0000 (19:43 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Mon, 23 Aug 2021 11:43:48 +0000 (19:43 +0800)
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/ICSmsManager.java
app/src/main/java/com/enqualcomm/support/service/PhoneCallListener.java
app/src/main/java/com/ic/protocols/protocol_s123.java

index e382133..0af15fc 100644 (file)
@@ -849,7 +849,6 @@ public class CoreService extends Service {
 
         Config.enable_NTP_Server(this, !Config.disable_ntp_server);
 
-
         //初始化温度测试相关参数
         //runtime.temperature_adjustValue= TemperatureUtil.getTempAdjustValue();
         Config.loadTemperatureSettings(runtime);
index 1292ace..a62c2f8 100644 (file)
@@ -128,10 +128,6 @@ public class ICSmsManager extends BroadcastReceiver {
             if (!handleSMS_CMD(from, message)) {
                 //说明不是sms命令,提示短信接收。
                 if (!TextUtils.isEmpty(forceReadMsg)) {
-                    WakeLockUtil.ScreenOnWakeLockTemperary(context);
-                    ContextProxy.play_waning_notify(context);
-                    VibrateUtil.getInstance(context).VibrateOnOnce(true);
-                    Util.mSleep(2000);
                     //add by TrillGates=======start
                     //弹出提示窗口,如果是S123的话,就不弹出了
                     //因为S123有特定的短信提示,创建对应的notification即可
@@ -140,6 +136,7 @@ public class ICSmsManager extends BroadcastReceiver {
                     //2.写入一个设置状态,Launcher顶部显示短信图标。如果短信打开,则会把此标记置成0
                     //表示已经读
                     if (Config.protocol_no == PROTOCOL_S123) {
+                        //判断当前短信的状态
                         createNotification(from, "sms");
                         //修改设置项
                         updateMsgSettingsValue();
@@ -152,6 +149,9 @@ public class ICSmsManager extends BroadcastReceiver {
                         list.add(message);
                         instance.addData(list);
                     }
+                    WakeLockUtil.ScreenOnWakeLockTemperary(context);
+                    ContextProxy.play_waning_notify(context);
+                    VibrateUtil.getInstance(context).VibrateOnOnce(true);
                 } else {
                     //说明不是sms命令,提示短信接收。
                     ContextProxy.sendMsgBroadcast(context, message, 1);
@@ -283,14 +283,13 @@ public class ICSmsManager extends BroadcastReceiver {
         while (msgit.hasNext()) {
             String message = (String) msgit.next();
             ICLogger.i("reply message to " + phoneNumber + ", " + message);
-            if (phoneNumber != null && !phoneNumber.isEmpty()) {
+            if (!phoneNumber.isEmpty()) {
                 smsManager.sendTextMessage(phoneNumber, (String) null, message, (PendingIntent) null, (PendingIntent) null);
             }
         }
     }
 
     private boolean isAdminNumber(String phoneNumb) {
-
         return true;
     }
 
index 5386eb5..917eb00 100644 (file)
@@ -42,9 +42,6 @@ public class PhoneCallListener extends PhoneStateListener {
         ICLogger.d("state == > " + state + " incomingNumber ==>  " + incomingNumber);
         if (!TextUtils.isEmpty(incomingNumber)) {
             this.mLastPhoneNumber = incomingNumber;
-        } else {
-            ICLogger.d("incomeNumber is null...");
-            return;
         }
         //挂断的时候,去查询一下是不是未接电话即可
         if (state == CALL_STATE_IDLE) {
@@ -80,6 +77,7 @@ public class PhoneCallListener extends PhoneStateListener {
             }
             c.close();
         }
+        this.mLastPhoneNumber = null;
     }
 
     private void updateSettingsState() {
@@ -91,6 +89,17 @@ public class PhoneCallListener extends PhoneStateListener {
     }
 
     private void createNotification(String phoneNum) {
+        //先查询是否有,如果已经有的话,就不创建了
+        Cursor query = mContext.getContentResolver().query(Uri.parse(ICNotificationProvider.NOTIFICATIONS),
+                null, "category=? and type=? and title=?",
+                new String[]{"com.ic.phone", "missed_phone", phoneNum}, null);
+        if (query != null) {
+            if (query.moveToNext()) {
+                ICLogger.d("has one in there...");
+                return;
+            }
+            query.close();
+        }
         ICLogger.d("createNotification==> " + phoneNum);
         ContentValues contentValues = new ContentValues();
         contentValues.put(ICDatabaseHelper.notification_category, "com.ic.phone");
index 71df616..4827575 100644 (file)
@@ -58,11 +58,13 @@ import com.ic.s123.GenericWeatherInfo;
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.TimeZone;
 
 import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE;
 import static com.enqualcomm.support.Constants.DIALOG_ACTION;
@@ -781,13 +783,20 @@ public class protocol_s123 {
             log("handleBP00", "Set Datetime " + msg[1]);
             log("handleBP00", "Set TimeZone " + msg[2]);
             try {
-                Date datetime = TimeUtil.parseDatetiime(msg[1]);
+                SimpleDateFormat df3 = new SimpleDateFormat("yyyyMMddHHmmss");
+                df3.setTimeZone(TimeZone.getTimeZone("UTC"));
+                String timeStr = msg[1];
+                ICLogger.d("timeStr == > " + timeStr);
+                Date datetime = df3.parse(timeStr);
+                ICLogger.d("datetime == > " + datetime);
                 int timezone = Integer.parseInt(msg[2]);
                 if (datetime != null) {
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
-                    TimeUtil.setTimeZone(runtime.getContextProxy().context, timezone);
+                    //TimeUtil.setTimeZone(runtime.getContextProxy().context, timezone);
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
-                    TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime, timezone, true);
+                    TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime,
+                            //对时区不进行设置,用户通过语言模块进行设置
+                            timezone, false);
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
                 }
             } catch (Exception e) {