From 45721d5dec81f707b44c53cae5d866aaf932c12a Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Fri, 13 Mar 2026 17:12:07 +0530 Subject: [PATCH] fix: polish Android QR scanner onboarding (#45021) --- CHANGELOG.md | 1 + .../src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 434b2b8fd31..d3eb7679f5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Docs: https://docs.openclaw.ai - Agents/OpenAI-compatible compat overrides: respect explicit user `models[].compat` opt-ins for non-native `openai-completions` endpoints so usage-in-streaming capability overrides no longer get forced off when the endpoint actually supports them. (#44432) Thanks @cheapestinference. - Agents/Azure OpenAI startup prompts: rephrase the built-in `/new`, `/reset`, and post-compaction startup instruction so Azure OpenAI deployments no longer hit HTTP 400 false positives from the content filter. (#43403) Thanks @xingsy97. - Config/validation: accept documented `agents.list[].params` per-agent overrides in strict config validation so `openclaw config validate` no longer rejects runtime-supported `cacheRetention`, `temperature`, and `maxTokens` settings. (#41171) Thanks @atian8179. +- Android/onboarding QR scan: switch setup QR scanning to Google Code Scanner so onboarding uses a more reliable scanner instead of the legacy embedded ZXing flow. (#45021) Thanks @obviyus. ## 2026.3.12 diff --git a/apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt b/apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt index 71d5b84f5d5..db550ded615 100644 --- a/apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt +++ b/apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt @@ -562,8 +562,8 @@ fun OnboardingFlow(viewModel: MainViewModel, modifier: Modifier = Modifier) { .addOnCanceledListener { // User dismissed the scanner; preserve current form state. } - .addOnFailureListener { error -> - gatewayError = resolveQrScannerError(error) + .addOnFailureListener { + gatewayError = qrScannerErrorMessage() } }, onAdvancedOpenChange = { gatewayAdvancedOpen = it }, @@ -1790,10 +1790,8 @@ private fun isPermissionGranted(context: Context, permission: String): Boolean { return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED } -private fun resolveQrScannerError(error: Exception): String { - val detail = error.message?.trim().orEmpty() - val prefix = "Google Code Scanner could not start. Update Google Play services or use the setup code manually." - return if (detail.isEmpty()) prefix else "$prefix ($detail)" +private fun qrScannerErrorMessage(): String { + return "Google Code Scanner could not start. Update Google Play services or use the setup code manually." } private fun isNotificationListenerEnabled(context: Context): Boolean {