From cb5573da73174141a234ad19ad5de7977c25135e Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Mon, 31 Aug 2026 17:20:24 +0800 Subject: [PATCH] add manual continue button for SSO login flow --- .../oraltrainer/sample/MainActivity.kt | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt index b180a2b..7ab1196 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt @@ -582,6 +582,7 @@ class MainActivity : Activity() { setBackgroundColor(COLOR_BACKGROUND) } + // ── 顶部:取消按钮 ── container.addView(Button(this).apply { text = "取消登录" setOnClickListener { @@ -592,19 +593,11 @@ class MainActivity : Activity() { layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 44.dp) }) + // ── 中间:WebView ── ssoWebView = WebView(this).apply { settings.javaScriptEnabled = true settings.domStorageEnabled = true webViewClient = object : WebViewClient() { - override fun onPageFinished(view: WebView?, url: String?) { - super.onPageFinished(view, url) - if (ssoPhase == 0 && url != null && !url.contains("/login")) { - // 用户已登录(离开了登录页),现在加载授权页 - ssoPhase = 1 - view?.post { view.loadUrl(authorizeUrl) } - } - } - override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { val url = request?.url ?: return false if (ssoPhase >= 1 && url.toString().startsWith(SSO_REDIRECT_URI)) { @@ -621,6 +614,18 @@ class MainActivity : Activity() { container.addView(ssoWebView, LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f )) + + // ── 底部:登录完成后手动点继续 ── + container.addView(Button(this).apply { + text = "已登录,点击继续授权" + background = rounded(COLOR_ACCENT, 8f) + setTextColor(Color.WHITE) + setOnClickListener { + ssoPhase = 1 + ssoWebView?.loadUrl(authorizeUrl) + } + layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 48.dp).withMargins(8.dp, 8.dp, 8.dp, 8.dp) + }) return container }