From 2e3de6b96819c5c7028946a7fbedae9963aa9d9c Mon Sep 17 00:00:00 2001 From: fengge <844143714@qq.com> Date: Tue, 30 Jun 2026 16:56:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E4=B8=8A=E6=AC=A1=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E7=BE=A4=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kingway/ptt/CallBackResolution.java | 2 + .../com/stand/standapp/AndroidInterface.kt | 3 + .../java/com/stand/standapp/MainActivity.kt | 68 +++++++++++++++---- 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java b/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java index 07e0de2..6fb3351 100644 --- a/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java +++ b/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java @@ -345,6 +345,8 @@ public class CallBackResolution { indexGroupId = userGroupId; indexGroupName = userGroupName; CallBackUtil.callBackNotifyUpdateGroup(userGroupId, userGroupName); + // 触发首次进入群组状态 + com.stand.standapp.MainActivity.onFirstGroupEntered(); } break; diff --git a/app/src/main/java/com/stand/standapp/AndroidInterface.kt b/app/src/main/java/com/stand/standapp/AndroidInterface.kt index 0d7175e..8e34638 100644 --- a/app/src/main/java/com/stand/standapp/AndroidInterface.kt +++ b/app/src/main/java/com/stand/standapp/AndroidInterface.kt @@ -453,6 +453,9 @@ class AndroidInterface(private val activity: MainActivity) { com.stand.standapp.MainActivity.executeJs("if(window.appLogin){window.appLogin('$escaped');}") Timber.tag("AndroidInterface").d("Called appLogin") } + + // 页面加载并初始化完成后触发状态 + com.stand.standapp.MainActivity.onPageLoadFinished() } catch (e: Exception) { Timber.tag("UI").e(e, "隐藏加载布局失败") } diff --git a/app/src/main/java/com/stand/standapp/MainActivity.kt b/app/src/main/java/com/stand/standapp/MainActivity.kt index 71f9f57..ddeeae0 100644 --- a/app/src/main/java/com/stand/standapp/MainActivity.kt +++ b/app/src/main/java/com/stand/standapp/MainActivity.kt @@ -43,22 +43,65 @@ class MainActivity : AppCompatActivity() { } } + @Volatile + private var hasFirstGroupEntered = false + + @Volatile + private var hasPageFinished = false + + @Volatile + private var hasAutoJumped = false + + @JvmStatic + fun onFirstGroupEntered() { + Timber.tag("PTT").d("Condition met: First group entered") + hasFirstGroupEntered = true + checkAndAutoJumpToLastGroup() + } + + @JvmStatic + fun onPageLoadFinished() { + Timber.tag("PTT").d("Condition met: Web page loaded and initialized") + hasPageFinished = true + checkAndAutoJumpToLastGroup() + } + + @JvmStatic + fun resetAutoJumpStates() { + hasFirstGroupEntered = false + hasPageFinished = false + hasAutoJumped = false + Timber.tag("PTT").d("Auto jump states reset") + } + + @JvmStatic + fun checkAndAutoJumpToLastGroup() { + synchronized(this) { + if (hasFirstGroupEntered && hasPageFinished && !hasAutoJumped) { + hasAutoJumped = true + instance?.let { ctx -> + val lastGroupId = AppConfig.getLastGroupId(ctx) + if (lastGroupId.isNotEmpty()) { + Timber.tag("PTT").d("Both conditions met. Auto-jumping to last joined group: %s after 2s delay", lastGroupId) + ctx.runOnUiThread { + android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({ + instance?.pttInterface?.pttJumpGroup(lastGroupId) + }, 2000) + } + } else { + Timber.tag("PTT").d("Both conditions met but lastGroupId is empty, skip auto-jump") + } + } + } else { + Timber.tag("PTT").d("Check auto jump: hasFirstGroupEntered=$hasFirstGroupEntered, hasPageFinished=$hasPageFinished, hasAutoJumped=$hasAutoJumped") + } + } + } + @JvmStatic fun onPttLoginSuccess() { Timber.tag("MainActivity").d("onPttLoginSuccess called from Native") executeJs("onPttLoginSuccess()") - - instance?.let { ctx -> - val lastGroupId = AppConfig.getLastGroupId(ctx) - if (lastGroupId.isNotEmpty()) { - Timber.tag("PTT").d("Auto-jumping to last joined group: %s after delay", lastGroupId) - ctx.runOnUiThread { - android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({ - instance?.pttInterface?.pttJumpGroup(lastGroupId) - }, 2000) - } - } - } } // 硬件按键触发 @@ -500,6 +543,7 @@ class MainActivity : AppCompatActivity() { Timber.tag("MainActivity").e(e, "Failed to redirect to LoginActivity") } try { + resetAutoJumpStates() CallBackResolution.resetPttLoginStatus(); }catch (e: Exception) { Timber.tag("MainActivity").e(e, "Failed to clear public value")