xiongzhu há 1 ano atrás
pai
commit
ee66a2d895

+ 1 - 1
app/build.gradle

@@ -24,7 +24,7 @@ android {
         applicationId "com.example.modifier"
         minSdk 29
         targetSdk 34
-        versionCode 127
+        versionCode 128
         versionName "1.0.1"
         archivesBaseName = "modifier-${versionCode}"
 

+ 31 - 2
app/src/main/java/com/example/modifier/http/KtorClient.kt

@@ -6,7 +6,6 @@ import io.ktor.client.HttpClient
 import io.ktor.client.call.body
 import io.ktor.client.engine.okhttp.OkHttp
 import io.ktor.client.plugins.ClientRequestException
-import io.ktor.client.plugins.HttpRequestRetry
 import io.ktor.client.plugins.HttpResponseValidator
 import io.ktor.client.plugins.HttpTimeout
 import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
@@ -24,7 +23,6 @@ val KtorClient = HttpClient(OkHttp) {
             if (it) Global.serverUrl else "${Global.serverUrl}/"
         })
     }
-    install(HttpRequestRetry)
     install(HttpTimeout) {
         requestTimeoutMillis = 180000
         connectTimeoutMillis = 180000
@@ -47,4 +45,35 @@ val KtorClient = HttpClient(OkHttp) {
             }
         }
     }
+}
+
+val KtorClient1 = HttpClient(OkHttp) {
+    defaultRequest {
+        Global.load()
+        url(Global.serverUrl.endsWith("/").let {
+            if (it) Global.serverUrl else "${Global.serverUrl}/"
+        })
+    }
+    install(HttpTimeout) {
+        requestTimeoutMillis = 5000
+        connectTimeoutMillis = 5000
+        socketTimeoutMillis = 5000
+    }
+    install(Resources)
+    install(ContentNegotiation) {
+        json(Json {
+            prettyPrint = true
+            isLenient = true
+            ignoreUnknownKeys = true
+            explicitNulls = false
+        })
+    }
+    HttpResponseValidator {
+        validateResponse { response ->
+            if (response.status.value !in 200..299) {
+                val error = response.body<ErrorResponse>()
+                throw ClientRequestException(response, error.message ?: "Unknown error")
+            }
+        }
+    }
 }

+ 45 - 16
app/src/main/java/com/example/modifier/service/ModifierService.kt

@@ -61,6 +61,7 @@ import com.example.modifier.enums.RcsConnectionStatus
 import com.example.modifier.extension.kill
 import com.example.modifier.hasRootAccess
 import com.example.modifier.http.KtorClient
+import com.example.modifier.http.KtorClient1
 import com.example.modifier.http.api.DeviceApi
 import com.example.modifier.http.api.RcsNumberApi
 import com.example.modifier.http.api.SysConfigApi
@@ -897,6 +898,12 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                     R.id.restart_modifier -> {
                         restartModifier()
                     }
+
+                    R.id.reset_counter -> {
+                        sendCount = 0
+                        counter = 0
+                        updateCountUI()
+                    }
                 }
 
                 withContext(Dispatchers.Main) {
@@ -1339,14 +1346,23 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                     }
 
                     launch {
-                        KtorClient.post(
-                            RcsNumberApi.Id.OtpState(
-                                RcsNumberApi.Id(
-                                    RcsNumberApi(),
-                                    rcsNumber.id
-                                )
-                            )
-                        )
+                        run OtpState@{
+                            repeat(3) {
+                                try {
+                                    KtorClient.post(
+                                        RcsNumberApi.Id.OtpState(
+                                            RcsNumberApi.Id(
+                                                RcsNumberApi(),
+                                                rcsNumber.id
+                                            )
+                                        )
+                                    )
+                                    return@OtpState
+                                } catch (e: Exception) {
+                                    Log.e(TAG, "Send OtpState Error: ${e.message}", e)
+                                }
+                            }
+                        }
                     }
 
                     if (rcsNumber.expiryTime.isBefore(LocalDateTime.now())) {
@@ -1418,14 +1434,27 @@ class ModifierService : AccessibilityService(), Emitter.Listener {
                             continue
                         } else {
                             launch {
-                                KtorClient.post(
-                                    RcsNumberApi.Id.Configured(
-                                        RcsNumberApi.Id(
-                                            RcsNumberApi(),
-                                            rcsNumber.id
-                                        )
-                                    )
-                                )
+                                run ConfiguredState@{
+                                    repeat(3) {
+                                        try {
+                                            KtorClient.post(
+                                                RcsNumberApi.Id.Configured(
+                                                    RcsNumberApi.Id(
+                                                        RcsNumberApi(),
+                                                        rcsNumber.id
+                                                    )
+                                                )
+                                            )
+                                            return@ConfiguredState
+                                        } catch (e: Exception) {
+                                            Log.e(
+                                                TAG,
+                                                "Send ConfiguredState Error: ${e.message}",
+                                                e
+                                            )
+                                        }
+                                    }
+                                }
                             }
                             requestSuccess = true
                             break

+ 3 - 0
app/src/main/res/menu/more.xml

@@ -24,4 +24,7 @@
     <item
         android:id="@+id/restart_modifier"
         android:title="重启Modifier" />
+    <item
+        android:id="@+id/reset_counter"
+        android:title="计数清零" />
 </menu>