x1ongzhu 1 rok temu
rodzic
commit
ab2e387eb6

+ 1 - 0
app/src/main/java/com/example/modifier/enums/RcsConfigureState.kt

@@ -9,5 +9,6 @@ enum class RcsConfigureState {
     VERIFYING_OTP,
     CONFIGURING,
     CONFIGURED,
+    REPLAY_REQUEST,
     RETRY
 }

+ 14 - 5
app/src/main/java/com/example/modifier/service/ModifierService.kt

@@ -223,6 +223,8 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                             rcsConfigureState.postValue(RcsConfigureState.WAITING_FOR_TOS)
                         } else if (line.contains("destState=RetryState")) {
                             rcsConfigureState.postValue(RcsConfigureState.RETRY)
+                        } else if (line.contains("destState=ReplayRequestState")) {
+                            rcsConfigureState.postValue(RcsConfigureState.REPLAY_REQUEST)
                         }
                         Regex("(?<time>\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{3}) I/BugleRcsEngine\\(\\W*\\d+\\): (?<log>.*)").matchEntire(
                             line
@@ -1046,10 +1048,10 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
         if (requesting.value!!) {
             return
         }
-        requestNumberCount++
+
         requesting.postValue(true)
 
-        if (Global.telephonyConfig.mock == false) {
+        if (Global.telephonyConfig.mock == true) {
             backup(
                 backupItemDao = backupItemDao,
                 type = "auto",
@@ -1058,12 +1060,14 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
             )
         }
 
+        requestNumberCount++
         var requestSuccess = false
-
+        var retry = 0
+        var needRest = reset
         withTimeoutOrNull(1.hours) {
-            var needRest = reset
             while (true) {
                 delay(200)
+                needRest = needRest || retry > 2 || requestNumberCount > 15
                 try {
                     if (requestMode == 2 && !noBackup) {
                         val backup = backupItemDao.findBackupForRestore(
@@ -1086,6 +1090,7 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                             .getBoolean("do_not_reset", false)
                     ) {
                         reset()
+                        retry = 0
                         needRest = false
                     }
 
@@ -1155,6 +1160,10 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                         if (!toggleRcsSwitch(true)) {
                             needRest = true
                         }
+                        if (RcsConfigureState.REPLAY_REQUEST == rcsConfigureState.value) {
+                            Log.e(TAG, "REPLAY_REQUEST detected, may reset after 3 retry ($retry)")
+                            retry++
+                        }
                         Log.e(TAG, "RCS not entered waiting for OTP state, retrying...")
                         continue
                     }
@@ -1343,7 +1352,7 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
             binding.btnStoreNumbers.isEnabled = false
         }
         repeat(100) {
-            requestNumber(fresh = it > 0)
+            requestNumber(reset = true, fresh = it > 0)
             delay(5000)
         }
         withContext(Dispatchers.Main) {