Skip to content

Crash: ActivityNotFoundException: No Activity found to handle null #1873

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
edenman opened this issue Nov 23, 2020 · 11 comments
Open

Crash: ActivityNotFoundException: No Activity found to handle null #1873

edenman opened this issue Nov 23, 2020 · 11 comments

Comments

@edenman
Copy link
Contributor

edenman commented Nov 23, 2020

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)
@edenman
Copy link
Contributor Author

edenman commented Nov 23, 2020

Gonna update to 7.1.0 and see if that helps

@edenman
Copy link
Contributor Author

edenman commented Nov 25, 2020

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.

@edenman
Copy link
Contributor Author

edenman commented Nov 25, 2020

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?

@samtstern
Copy link
Contributor

@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.

@edenman
Copy link
Contributor Author

edenman commented Dec 1, 2020

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.

@samtstern
Copy link
Contributor

@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.

@edenman
Copy link
Contributor Author

edenman commented Dec 6, 2020

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?

@samtstern
Copy link
Contributor

samtstern commented Dec 7, 2020 via email

@syntech16
Copy link

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.

@edenman
Copy link
Contributor Author

edenman commented Dec 17, 2020

This is still happening in 7.1.1

@zjamshidi
Copy link

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'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants