From f7ce6ecfca8f2f59e764d2142b0310359005799c Mon Sep 17 00:00:00 2001 From: Davinci9196 Date: Fri, 10 Oct 2025 10:45:45 +0800 Subject: [PATCH 1/2] Optimize the G-account signup --- .../microg/gms/auth/login/LoginActivity.java | 20 +++++++++++++++++++ .../gms/accountsettings/ui/MainActivity.kt | 1 + .../gms/accountsettings/ui/WebViewHelper.kt | 11 ++++++++++ 3 files changed, 32 insertions(+) diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java index c453a2d95b..f6caf5e367 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java @@ -49,6 +49,7 @@ import org.json.JSONArray; import org.microg.gms.accountaction.AccountNotificationKt; +import org.microg.gms.accountsettings.ui.MainActivity; import org.microg.gms.auth.AuthConstants; import org.microg.gms.auth.AuthManager; import org.microg.gms.auth.AuthRequest; @@ -74,6 +75,7 @@ import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; +import static org.microg.gms.accountsettings.ui.ExtensionsKt.EXTRA_URL; import static org.microg.gms.auth.AuthPrefs.isAuthVisible; import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME; import static org.microg.gms.common.Constants.GMS_VERSION_CODE; @@ -94,6 +96,7 @@ public class LoginActivity extends AssistantActivity { private static final String EMBEDDED_RE_AUTH_URL = "https://accounts.google.com/embedded/reauth/v2/android"; private static final String PROGRAMMATIC_AUTH_URL = "https://accounts.google.com/o/oauth2/programmatic_auth"; private static final String GOOGLE_SUITE_URL = "https://accounts.google.com/signin/continue"; + private static final String GOOGLE_SIGNUP_URL = "https://accounts.google.com/signup"; private static final String MAGIC_USER_AGENT = " MinuteMaid"; private static final String COOKIE_OAUTH_TOKEN = "oauth_token"; private static final String ACTION_UPDATE_ACCOUNT = "com.google.android.gms.auth.GOOGLE_ACCOUNT_CHANGE"; @@ -124,6 +127,23 @@ protected void onCreate(Bundle savedInstanceState) { authContent = (ViewGroup) findViewById(R.id.auth_content); ((ViewGroup) findViewById(R.id.auth_root)).addView(webView); webView.setWebViewClient(new WebViewClientCompat() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + Log.d(TAG, "shouldOverrideUrlLoading: url: " + url); + Uri uri = Uri.parse(url); + String uriPath = uri.getPath(); + if (uriPath != null && uriPath.contains("/signup")) { + String biz = uri.getQueryParameter("biz"); + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + intent.setPackage(GMS_PACKAGE_NAME); + intent.putExtra(EXTRA_URL, biz != null ? GOOGLE_SIGNUP_URL + "?biz=" + biz : GOOGLE_SIGNUP_URL); + startActivity(intent); + finish(); + return true; + } + return super.shouldOverrideUrlLoading(view, url); + } + @Override public void onPageFinished(WebView view, String url) { Log.d(TAG, "pageFinished: " + view.getUrl()); diff --git a/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/MainActivity.kt b/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/MainActivity.kt index 09c12663e0..a1e5654356 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/MainActivity.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/MainActivity.kt @@ -153,6 +153,7 @@ private val ALLOWED_WEB_PREFIXES = setOf( "https://myadcenter.google.com/controls", "https://families.google.com/kidonboarding", "https://profilewidgets.google.com/alternate-profile/edit", + "https://workspace.google.com/", ) private val ACTION_TO_SCREEN_ID = hashMapOf( diff --git a/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/WebViewHelper.kt b/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/WebViewHelper.kt index 05430a7ff6..518d0faa72 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/WebViewHelper.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/accountsettings/ui/WebViewHelper.kt @@ -96,6 +96,17 @@ class WebViewHelper(private val activity: MainActivity, private val webView: Web } return false } + if (url.startsWith("sms:")) { + try { + val fixedUrl = url.replaceFirst("sms://", "sms:") + val intent = Intent(Intent.ACTION_VIEW, fixedUrl.toUri()) + activity.startActivity(intent) + return true + } catch (e: Exception) { + Log.w(TAG, "Failed to open SMS", e) + } + return false + } val overrideUri = url.toUri() if (overrideUri.path?.endsWith("/signin/identifier") == true) { val intent = Intent(activity, LoginActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } From 7e719ff3b676b6a22f87be51bd7984eaed93b6c9 Mon Sep 17 00:00:00 2001 From: Davinci9196 Date: Wed, 15 Oct 2025 11:18:45 +0800 Subject: [PATCH 2/2] Optimize code --- .../org/microg/gms/auth/login/LoginActivity.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java index f6caf5e367..9e63a92cf5 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java @@ -42,6 +42,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.webkit.WebViewClientCompat; @@ -101,6 +102,7 @@ public class LoginActivity extends AssistantActivity { private static final String COOKIE_OAUTH_TOKEN = "oauth_token"; private static final String ACTION_UPDATE_ACCOUNT = "com.google.android.gms.auth.GOOGLE_ACCOUNT_CHANGE"; private static final String PERMISSION_UPDATE_ACCOUNT = "com.google.android.gms.auth.permission.GOOGLE_ACCOUNT_CHANGE"; + private static final int REQUEST_CODE_SIGNUP = 1001; private final FidoHandler fidoHandler = new FidoHandler(this); private final DroidGuardHandler dgHandler = new DroidGuardHandler(this); @@ -137,8 +139,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent intent = new Intent(LoginActivity.this, MainActivity.class); intent.setPackage(GMS_PACKAGE_NAME); intent.putExtra(EXTRA_URL, biz != null ? GOOGLE_SIGNUP_URL + "?biz=" + biz : GOOGLE_SIGNUP_URL); - startActivity(intent); - finish(); + startActivityForResult(intent, REQUEST_CODE_SIGNUP); return true; } return super.shouldOverrideUrlLoading(view, url); @@ -198,6 +199,14 @@ public void onPageFinished(WebView view, String url) { } } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_CODE_SIGNUP) { + webView.reload(); + } + } + @Override protected void onNextButtonClicked() { super.onNextButtonClicked();