thunderbird / thunderbird/thunderbird-android
AppAuth fails to collect browser information
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 14k
- Forks
- 2.8k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 57
Description
Looking at some of the crash reports of TB beta, it seems that AppAuth-Android fails to properly collect available browsers on some devices. Seen on Android 13 and 14.
Check if we could fix the issue
Exception android.content.ActivityNotFoundException:
at net.openid.appauth.AuthorizationService.prepareAuthorizationRequestIntent (AuthorizationService.java:555)
at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent (AuthorizationService.java:390)
at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent (AuthorizationService.java:419)
at app.k9mail.feature.account.oauth.data.AuthorizationRepository.createAuthorizationRequestIntent (AuthorizationRepository.kt:92)
at app.k9mail.feature.account.oauth.data.AuthorizationRepository.getAuthorizationRequestIntent (AuthorizationRepository.kt:30)
at app.k9mail.feature.account.oauth.domain.usecase.GetOAuthRequestIntent.execute (GetOAuthRequestIntent.kt:16)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.onSignIn (AccountOAuthViewModel.kt:48)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.event (AccountOAuthViewModel.kt:39)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.event (AccountOAuthViewModel.kt:18)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke (UnidirectionalViewModel.kt:91)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke (UnidirectionalViewModel.kt:91)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke (UnidirectionalViewModel.kt:91)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke (UnidirectionalViewModel.kt:91)
at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt.AccountOAuthView$lambda$4$lambda$3 (AccountOAuthView.kt:36)
at app.k9mail.feature.account.oauth.ui.AccountOAuthContentKt.AccountOAuthContent$lambda$4$lambda$3$lambda$2 (AccountOAuthContent.kt:46)
at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke-k-4lQ0M (Clickable.kt:639)
at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke (Clickable.kt:633)
at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend (TapGestureDetector.kt:255)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTaskKt.resume (DispatchedTask.kt:175)
at kotlinx.coroutines.DispatchedTaskKt.dispatch (DispatchedTask.kt:164)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume (CancellableContinuationImpl.kt:466)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl (CancellableContinuationImpl.kt:500)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default (CancellableContinuationImpl.kt:489)
at kotlinx.coroutines.CancellableContinuationImpl.resumeWith (CancellableContinuationImpl.kt:364)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent (SuspendingPointerInputFilter.kt:719)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent (SuspendingPointerInputFilter.kt:598)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY (SuspendingPointerInputFilter.kt:620)
at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY (Clickable.kt:1044)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass (HitPathTracker.kt:387)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass (HitPathTracker.kt:373)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass (HitPathTracker.kt:373)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass (HitPathTracker.kt:373)
at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass (HitPathTracker.kt:229)
at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges (HitPathTracker.kt:144)
at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog (PointerInputEventProcessor.kt:120)
at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc (AndroidComposeView.android.kt:1993)
at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc (AndroidComposeView.android.kt:1944)
at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent (AndroidComposeView.android.kt:1828)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3127)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:531)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1945)
at android.app.Activity.dispatchTouchEvent (Activity.java:4364)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:489)
at android.view.View.dispatchPointerEvent (View.java:15327)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6805)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6605)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6059)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6116)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6082)
at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:6247)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6090)
at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6304)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6063)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6116)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6082)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6090)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6063)
at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:9209)
at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:9125)
at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:9086)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:9353)
at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:274)
at android.os.MessageQueue.nativePollOnce
at android.os.MessageQueue.next (MessageQueue.java:342)
at android.os.Looper.loopOnce (Looper.java:182)
at android.os.Looper.loop (Looper.java:357)
at android.app.ActivityThread.main (ActivityThread.java:8094)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:957)
As the library is not actively developed anymore we might need to look into alternatives.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at AuthorizationRepository.kt:92 and trace the AppAuth AuthorizationService calls shown in the stack trace. Reproduce the ActivityNotFoundException on Android 13 or 14, then investigate whether AppAuth-Android can be fixed or must be replaced; done means browser discovery and OAuth sign-in work without this crash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- authentication, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100