Firebaseui-android: Crash: ActivityNotFoundException: No Activity found to handle null

Created on 23 Nov 2020  Â·  11Comments  Â·  Source: firebase/FirebaseUI-Android

Env

  • Android Studio version: Android Studio 4.2 Canary 15
  • Firebase Component: Auth UI 6.2.0, Messaging 20.2.3

Problem

Steps to reproduce:

I haven't repro'd this myself, it came in via Sentry. There's none of my code in the stacktrace.

Relevant Code:

Breadcrumbs before the crash:

onActivityDestroyed class com.firebase.ui.auth.KickoffActivity 42604145 
ui.lifecycle state: stopped screen: MainActivity
ui.lifecycle state: saveInstanceState screen: MainActivity
ui.lifecycle state: stopped screen: KickoffActivity
ui.lifecycle state: saveInstanceState screen: KickoffActivity
ui.lifecycle state: paused screen: AuthMethodPickerActivity
onActivityPaused class com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity 19992921 
ui.lifecycle state: created screen: EmailActivity
onActivityCreated class com.firebase.ui.auth.ui.email.EmailActivity 189888988 
ui.lifecycle state: started screen: EmailActivity

Stacktrace

android.content.ActivityNotFoundException: No Activity found to handle null
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2058)
    at android.app.Activity.startIntentSenderForResultInner(Activity.java:5473)
    at android.app.Activity.startIntentSenderForResult(Activity.java:5439)
    at androidx.activity.ComponentActivity.startIntentSenderForResult(ComponentActivity.java:602)
    at androidx.core.app.ActivityCompat.startIntentSenderForResult(ActivityCompat.java:274)
    at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:200)
    at androidx.activity.result.ActivityResultRegistry$4.launch(ActivityResultRegistry.java:198)
    at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:42)
    at androidx.fragment.app.FragmentManager.launchStartIntentSenderForResult(FragmentManager.java:3012)
    at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:1448)
    at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:64)
    at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:42)
    at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:76)
    at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:19)
    at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
    at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:146)
    at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:468)
    at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:425)
    at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
    at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:265)
    at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:307)
    at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
    at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
    at androidx.fragment.app.Fragment.performStart(Fragment.java:2998)
    at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:606)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:308)
    at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1632)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3109)
    at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:3060)
    at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:262)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:482)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1432)
    at android.app.Activity.performStart(Activity.java:7847)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
needs-attention bug

All 11 comments

Gonna update to 7.1.0 and see if that helps

This has now happened four times, all to the same user. Who of course, I can't communicate with because presumably they haven't successfully logged in yet.

And I can't update to 7.1.0 because of #1874, waiting for 7.1.1.

I'm happy to submit a PR for this, just let me know what approach you'd like to take:
1) Catch the ANFE in the FlowUtils.startIntentSenderForResult methods
2) Check for null Intent in FlowUtils.unhandled and no-op
3) Perform some initial validation on the PendingIntent to ensure it's valid? Not sure what this would look like
4) Something else?

@edenman sorry for my slow response and thanks for the offer of a PR. Before we try to add a fix to catch this error I'd really like to find a way to reproduce it. Otherwise it could be covering up something larger.

Gotcha. How about a half-measure: catch the exception, add some more information about how we got in this state, then re-throw? I can't actually tell if you're able to grab that information early enough, though.

@edenman sorry for the slow response, I'd be fine with that!

Also 7.1.1 is out now, let me know if that fixes #1874 for you. I haven't had anyone confirm that directly yet.

I poked around and I can't even figure out what could be causing this so I don't know what/where to add logging. Lmk if you have guidance or if you can just add it yourself?

No worries I'll look into this one!

On Sun, Dec 6, 2020 at 11:44 AM Eric Denman notifications@github.com
wrote:

I poked around and I can't even figure out what could be causing this so I
don't know what/where to add logging. Lmk if you have guidance or if you
can just add it yourself?

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/firebase/FirebaseUI-Android/issues/1873#issuecomment-739552997,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACATB2SXSRBVNMBCIC26OTTSTPNKZANCNFSM4T75535Q
.

Hi! A few weeks ago I was able to reproduce that same error with another app I installed. @edenman , if you want me to try yours and see if I can reproduce it, just drop me a line.

This is still happening in 7.1.1

This is happening for my app, too:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle null
       at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
       at android.app.Activity.startIntentSenderForResultInner(Activity.java:5583)
       at android.app.Activity.startIntentSenderForResult(Activity.java:5549)
       at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:704)
       at androidx.core.app.ActivityCompat.startIntentSenderForResult(ActivityCompat.java:271)
       at androidx.fragment.app.FragmentActivity.startIntentSenderFromFragment(FragmentActivity.java:818)
       at androidx.fragment.app.FragmentActivity$HostCallbacks.onStartIntentSenderFromFragment(FragmentActivity.java:940)
       at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:1291)
       at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:64)
       at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:42)
       at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:76)
       at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:19)
       at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
       at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
       at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
       at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
       at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
       at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:265)
       at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:307)
       at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
       at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
       at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(FragmentViewLifecycleOwner.java:51)
       at androidx.fragment.app.Fragment.performStart(Fragment.java:2737)
       at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
       at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
       at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
       at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:258)
       at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:550)
       at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
       at android.app.Activity.performStart(Activity.java:8024)
       at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3457)
       at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
       at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:223)
       at android.app.ActivityThread.main(ActivityThread.java:7660)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

using:
implementation platform('com.google.firebase:firebase-bom:26.3.0')
implementation 'com.firebaseui:firebase-ui-auth:7.1.1'

Was this page helpful?
0 / 5 - 0 ratings