Skip to content

[Android Bug] Permission Request Crashes App When Using Embedded Capacitor 3.0#4343

Description

@maxoertel

Bug Report

Capacitor Version

馃拪   Capacitor Doctor  馃拪

Latest Dependencies:

  @capacitor/cli: 2.4.7
  @capacitor/core: 2.4.7
  @capacitor/android: 2.4.7
  @capacitor/ios: 2.4.7

Installed Dependencies:

  @capacitor/ios: not installed
  @capacitor/cli: 3.0.0-rc.0
  @capacitor/android: 3.0.0-rc.0
  @capacitor/core: 3.0.0-rc.0

Platform(s)

Android

Current Behavior

Hey 馃憢馃徏
I got a tab bar in my app. When the user clicks on the second tab I want to show a Capacitor BridgeFragment. This worked fine with Capacitor 2.x.x. Here is the code:

val transaction = fragmentManager.beginTransaction()
transaction.add(R.id.fragmentContainer,capacitorFragment, getFragmentTag(id))
transaction.show(capacitorFragment)
transaction.commit()

After upgrading to 3.x.x the app crashes with a IllegalStateException. StackTrace below.

Expected Behavior

The Capacitor fragment is displayed normally.

Stack Trace

    java.lang.IllegalStateException: LifecycleOwner com.xxxx.app.features.main.MainActivity@8a17bdc is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
        at androidx.activity.result.ActivityResultRegistry.register(ActivityResultRegistry.java:120)
        at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:669)
        at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:678)
        at com.getcapacitor.Plugin.initializeActivityLaunchers(Plugin.java:133)
        at com.getcapacitor.PluginHandle.load(PluginHandle.java:96)
        at com.getcapacitor.PluginHandle.<init>(PluginHandle.java:59)
        at com.getcapacitor.Bridge.registerPlugin(Bridge.java:473)
        at com.getcapacitor.Bridge.registerAllPlugins(Bridge.java:425)
        at com.getcapacitor.Bridge.<init>(Bridge.java:168)
        at com.getcapacitor.Bridge$Builder.create(Bridge.java:1173)
        at com.getcapacitor.BridgeFragment.load(BridgeFragment.java:76)
        at com.getcapacitor.BridgeFragment.onActivityCreated(BridgeFragment.java:114)
        at com.xxxx.app.features.capacitor.presentation.WebAppFragment.onActivityCreated(WebAppFragment.kt:105)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2983)
        at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:577)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:285)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2177)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2088)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990)
        at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

npm --version output: 6.12.1

node --version output: v12.13.1

Additional Context

When I directly add my Capacitor Fragment to my activity (not later, when the user did some action), I do not get this error.
The problem lays here:
at com.getcapacitor.Plugin.initializeActivityLaunchers(Plugin.java:133)
Capacitor tries to register something permission-related, which is not allowed at this point of the activity LifeCycle.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions