Package io.flutter.embedding.android

## Class FlutterFragmentActivity

- java.lang.Object
- - android.content.Context
  - - android.content.ContextWrapper
    - - android.view.ContextThemeWrapper
      - - android.app.Activity
        - - androidx.core.app.ComponentActivity
          - - androidx.activity.ComponentActivity
            - - androidx.fragment.app.FragmentActivity
              - - io.flutter.embedding.android.FlutterFragmentActivity

- All Implemented Interfaces:
    `ComponentCallbacks`, `ComponentCallbacks2`, `KeyEvent.Callback`, `LayoutInflater.Factory`, `LayoutInflater.Factory2`, `View.OnCreateContextMenuListener`, `Window.Callback`, `androidx.activity.OnBackPressedDispatcherOwner`, `androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback`, `androidx.core.app.ActivityCompat.RequestPermissionsRequestCodeValidator`, `androidx.core.view.KeyEventDispatcher.Component`, `androidx.lifecycle.LifecycleOwner`, `androidx.lifecycle.ViewModelStoreOwner`, `androidx.savedstate.SavedStateRegistryOwner`, `FlutterEngineConfigurator`, `FlutterEngineProvider`, `SplashScreenProvider`

      public class FlutterFragmentActivity
      extends androidx.fragment.app.FragmentActivity
      implements SplashScreenProvider, FlutterEngineProvider, FlutterEngineConfigurator

  A Flutter `Activity` that is based upon `FragmentActivity`.

  `FlutterFragmentActivity` exists because there are some Android APIs in the ecosystem that only accept a `FragmentActivity`. If a `FragmentActivity` is not required, you should consider using a regular `FlutterActivity` instead, because `FlutterActivity` is considered to be the standard, canonical implementation of a Flutter `Activity`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `FlutterFragmentActivity.CachedEngineIntentBuilder` | Builder to create an `Intent` that launches a `FlutterFragmentActivity` with an existing `FlutterEngine` that is cached in `FlutterEngineCache`.
    `static class` | `FlutterFragmentActivity.NewEngineIntentBuilder` | Builder to create an `Intent` that launches a `FlutterFragmentActivity` with a new `FlutterEngine` and the desired configuration.

    - ### Nested classes/interfaces inherited from class androidx.core.app.ComponentActivity

      `androidx.core.app.ComponentActivity.ExtraData`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `FRAGMENT_CONTAINER_ID` |

    - ### Fields inherited from class android.app.Activity

      `DEFAULT_KEYS_DIALER, DEFAULT_KEYS_DISABLE, DEFAULT_KEYS_SEARCH_GLOBAL, DEFAULT_KEYS_SEARCH_LOCAL, DEFAULT_KEYS_SHORTCUT, FOCUSED_STATE_SET, RESULT_CANCELED, RESULT_FIRST_USER, RESULT_OK`

    - ### Fields inherited from class android.content.Context

      `ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, APP_SEARCH_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, BLOB_STORE_SERVICE, BLUETOOTH_SERVICE, BUGREPORT_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_DIAGNOSTICS_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CROSS_PROFILE_APPS_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_HASH_SERVICE, DISPLAY_SERVICE, DOMAIN_VERIFICATION_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FILE_INTEGRITY_SERVICE, FINGERPRINT_SERVICE, GAME_SERVICE, HARDWARE_PROPERTIES_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_COMMUNICATION_SERVICE, MEDIA_METRICS_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, PEOPLE_SERVICE, PERFORMANCE_HINT_SERVICE, POWER_SERVICE, PRINT_SERVICE, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_IMS_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICE`

    - ### Fields inherited from interface android.content.ComponentCallbacks2

      `TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FlutterFragmentActivity()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `cleanUpFlutterEngine​(FlutterEngine flutterEngine)` | Hook for the host to cleanup references that were established in `configureFlutterEngine(FlutterEngine)` before the host is destroyed or detached.
    `void` | `configureFlutterEngine​(FlutterEngine flutterEngine)` | Hook for subclasses to easily configure a `FlutterEngine`.
    `static Intent` | `createDefaultIntent​(Context launchContext)` | Creates an `Intent` that launches a `FlutterFragmentActivity`, which executes a `main()` Dart entrypoint, and displays the "/" route as Flutter's initial route.
    `protected FlutterFragment` | `createFlutterFragment()` | Creates the instance of the `FlutterFragment` that this `FlutterFragmentActivity` displays.
    `protected String` | `getAppBundlePath()` | A custom path to the bundle that contains this Flutter app's resources, e.g., Dart code snapshots.
    `protected FlutterActivityLaunchConfigs.BackgroundMode` | `getBackgroundMode()` | The desired window background mode of this `Activity`, which defaults to `FlutterActivityLaunchConfigs.BackgroundMode.opaque`.
    `protected String` | `getCachedEngineId()` | Returns the ID of a statically cached `FlutterEngine` to use within this `FlutterFragmentActivity`, or `null` if this `FlutterFragmentActivity` does not want to use a cached `FlutterEngine`.
    `List<String>` | `getDartEntrypointArgs()` | The Dart entrypoint arguments will be passed as a list of string to Dart's entrypoint function.
    `String` | `getDartEntrypointFunctionName()` | The Dart entrypoint that will be executed as soon as the Dart snapshot is loaded.
    `String` | `getDartEntrypointLibraryUri()` | The Dart library URI for the entrypoint that will be executed as soon as the Dart snapshot is loaded.
    `protected FlutterEngine` | `getFlutterEngine()` |
    `protected String` | `getInitialRoute()` | The initial route that a Flutter app will render upon loading and executing its Dart code.
    `protected Bundle` | `getMetaData()` | Retrieves the meta data specified in the AndroidManifest.xml.
    `protected RenderMode` | `getRenderMode()` | Returns the desired `RenderMode` for the `FlutterView` displayed in this `FlutterFragmentActivity`.
    `protected void` | `onActivityResult​(int requestCode, int resultCode, Intent data)` |
    `void` | `onBackPressed()` |
    `protected void` | `onCreate​(Bundle savedInstanceState)` |
    `protected void` | `onNewIntent​(Intent intent)` |
    `void` | `onPostResume()` |
    `void` | `onRequestPermissionsResult​(int requestCode, String[] permissions, int[] grantResults)` |
    `void` | `onTrimMemory​(int level)` |
    `void` | `onUserLeaveHint()` |
    `FlutterEngine` | `provideFlutterEngine​(Context context)` | Hook for subclasses to easily provide a custom `FlutterEngine`.
    `protected FrameLayout` | `provideRootLayout​(Context context)` | Returns a `FrameLayout` that is used as the content view of this activity.
    `SplashScreen` | `provideSplashScreen()` | Provides a `SplashScreen` to display while Flutter initializes and renders its first frame.
    `protected boolean` | `shouldAttachEngineToActivity()` | Hook for subclasses to control whether or not the `FlutterFragment` within this `Activity` automatically attaches its `FlutterEngine` to this `Activity`.
    `boolean` | `shouldDestroyEngineWithHost()` | Returns false if the `FlutterEngine` backing this `FlutterFragmentActivity` should outlive this `FlutterFragmentActivity`, or true to be destroyed when the `FlutterFragmentActivity` is destroyed.
    `protected boolean` | `shouldHandleDeeplinking()` | Whether to handle the deeplinking from the `Intent` automatically if the `getInitialRoute` returns null.
    `static FlutterFragmentActivity.CachedEngineIntentBuilder` | `withCachedEngine​(String cachedEngineId)` | Creates a `FlutterFragmentActivity.CachedEngineIntentBuilder`, which can be used to configure an `Intent` to launch a `FlutterFragmentActivity` that internally uses an existing `FlutterEngine` that is cached in `FlutterEngineCache`.
    `static FlutterFragmentActivity.NewEngineIntentBuilder` | `withNewEngine()` | Creates an `FlutterFragmentActivity.NewEngineIntentBuilder`, which can be used to configure an `Intent` to launch a `FlutterFragmentActivity` that internally creates a new `FlutterEngine` using the desired Dart entrypoint, initial route, etc.

    - ### Methods inherited from class androidx.fragment.app.FragmentActivity

      `dump, getSupportFragmentManager, getSupportLoaderManager, onAttachFragment, onConfigurationChanged, onCreatePanelMenu, onCreateView, onCreateView, onDestroy, onLowMemory, onMenuItemSelected, onMultiWindowModeChanged, onPanelClosed, onPause, onPictureInPictureModeChanged, onPrepareOptionsPanel, onPreparePanel, onResume, onResumeFragments, onSaveInstanceState, onStart, onStateNotSaved, onStop, setEnterSharedElementCallback, setExitSharedElementCallback, startActivityForResult, startActivityForResult, startActivityFromFragment, startActivityFromFragment, startIntentSenderForResult, startIntentSenderForResult, startIntentSenderFromFragment, supportFinishAfterTransition, supportInvalidateOptionsMenu, supportPostponeEnterTransition, supportStartPostponedEnterTransition, validateRequestPermissionsRequestCode`

    - ### Methods inherited from class androidx.activity.ComponentActivity

      `getLastCustomNonConfigurationInstance, getLifecycle, getOnBackPressedDispatcher, getSavedStateRegistry, getViewModelStore, onRetainCustomNonConfigurationInstance, onRetainNonConfigurationInstance`

    - ### Methods inherited from class androidx.core.app.ComponentActivity

      `dispatchKeyEvent, dispatchKeyShortcutEvent, getExtraData, putExtraData, superDispatchKeyEvent`

    - ### Methods inherited from class android.app.Activity

      `addContentView, attachBaseContext, closeContextMenu, closeOptionsMenu, createPendingResult, dismissDialog, dismissKeyboardShortcutsHelper, dispatchGenericMotionEvent, dispatchPopulateAccessibilityEvent, dispatchTouchEvent, dispatchTrackballEvent, enterPictureInPictureMode, enterPictureInPictureMode, findViewById, finish, finishActivity, finishActivityFromChild, finishAffinity, finishAfterTransition, finishAndRemoveTask, finishFromChild, getActionBar, getApplication, getCallingActivity, getCallingPackage, getChangingConfigurations, getComponentName, getContentScene, getContentTransitionManager, getCurrentFocus, getFragmentManager, getIntent, getLastNonConfigurationInstance, getLayoutInflater, getLoaderManager, getLocalClassName, getMaxNumPictureInPictureActions, getMediaController, getMenuInflater, getParent, getParentActivityIntent, getPreferences, getReferrer, getRequestedOrientation, getSearchEvent, getSplashScreen, getSystemService, getTaskId, getTitle, getTitleColor, getVoiceInteractor, getVolumeControlStream, getWindow, getWindowManager, hasWindowFocus, invalidateOptionsMenu, isActivityTransitionRunning, isChangingConfigurations, isChild, isDestroyed, isFinishing, isImmersive, isInMultiWindowMode, isInPictureInPictureMode, isLaunchedFromBubble, isLocalVoiceInteractionSupported, isTaskRoot, isVoiceInteraction, isVoiceInteractionRoot, managedQuery, moveTaskToBack, navigateUpTo, navigateUpToFromChild, onActionModeFinished, onActionModeStarted, onActivityReenter, onApplyThemeResource, onAttachedToWindow, onAttachFragment, onChildTitleChanged, onContentChanged, onContextItemSelected, onContextMenuClosed, onCreate, onCreateContextMenu, onCreateDescription, onCreateDialog, onCreateDialog, onCreateNavigateUpTaskStack, onCreateOptionsMenu, onCreatePanelView, onCreateThumbnail, onDetachedFromWindow, onEnterAnimationComplete, onGenericMotionEvent, onGetDirectActions, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyShortcut, onKeyUp, onLocalVoiceInteractionStarted, onLocalVoiceInteractionStopped, onMenuOpened, onMultiWindowModeChanged, onNavigateUp, onNavigateUpFromChild, onOptionsItemSelected, onOptionsMenuClosed, onPerformDirectAction, onPictureInPictureModeChanged, onPictureInPictureRequested, onPictureInPictureUiStateChanged, onPostCreate, onPostCreate, onPrepareDialog, onPrepareDialog, onPrepareNavigateUpTaskStack, onPrepareOptionsMenu, onProvideAssistContent, onProvideAssistData, onProvideKeyboardShortcuts, onProvideReferrer, onRestart, onRestoreInstanceState, onRestoreInstanceState, onSaveInstanceState, onSearchRequested, onSearchRequested, onTitleChanged, onTopResumedActivityChanged, onTouchEvent, onTrackballEvent, onUserInteraction, onVisibleBehindCanceled, onWindowAttributesChanged, onWindowFocusChanged, onWindowStartingActionMode, onWindowStartingActionMode, openContextMenu, openOptionsMenu, overridePendingTransition, postponeEnterTransition, recreate, registerActivityLifecycleCallbacks, registerForContextMenu, releaseInstance, removeDialog, reportFullyDrawn, requestDragAndDropPermissions, requestPermissions, requestShowKeyboardShortcuts, requestVisibleBehind, requestWindowFeature, requireViewById, runOnUiThread, setActionBar, setContentTransitionManager, setContentView, setContentView, setContentView, setDefaultKeyMode, setEnterSharedElementCallback, setExitSharedElementCallback, setFeatureDrawable, setFeatureDrawableAlpha, setFeatureDrawableResource, setFeatureDrawableUri, setFinishOnTouchOutside, setImmersive, setInheritShowWhenLocked, setIntent, setLocusContext, setMediaController, setPictureInPictureParams, setProgress, setProgressBarIndeterminate, setProgressBarIndeterminateVisibility, setProgressBarVisibility, setRequestedOrientation, setResult, setResult, setSecondaryProgress, setShowWhenLocked, setTaskDescription, setTheme, setTitle, setTitle, setTitleColor, setTranslucent, setTurnScreenOn, setVisible, setVolumeControlStream, setVrModeEnabled, shouldShowRequestPermissionRationale, shouldUpRecreateTask, showAssist, showDialog, showDialog, showLockTaskEscapeMessage, startActionMode, startActionMode, startActivities, startActivities, startActivity, startActivity, startActivityFromChild, startActivityFromChild, startActivityFromFragment, startActivityFromFragment, startActivityIfNeeded, startActivityIfNeeded, startIntentSender, startIntentSender, startIntentSenderFromChild, startIntentSenderFromChild, startLocalVoiceInteraction, startLockTask, startManagingCursor, startNextMatchingActivity, startNextMatchingActivity, startPostponedEnterTransition, startSearch, stopLocalVoiceInteraction, stopLockTask, stopManagingCursor, takeKeyEvents, triggerSearch, unregisterActivityLifecycleCallbacks, unregisterForContextMenu`

    - ### Methods inherited from class android.view.ContextThemeWrapper

      `applyOverrideConfiguration, getAssets, getResources, getTheme, setTheme`

    - ### Methods inherited from class android.content.ContextWrapper

      `bindIsolatedService, bindService, bindService, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, checkUriPermissions, clearWallpaper, createAttributionContext, createConfigurationContext, createContext, createContextForSplit, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, createWindowContext, createWindowContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAttributionSource, getAttributionTag, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDir, getDisplay, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getOpPackageName, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getParams, getSharedPreferences, getSystemServiceName, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, isUiContext, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setWallpaper, setWallpaper, startForegroundService, startInstrumentation, startService, stopService, unbindService, unregisterReceiver, updateServiceGroup`

    - ### Methods inherited from class android.content.Context

      `getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, sendBroadcastWithMultiplePermissions, unregisterComponentCallbacks`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface android.view.Window.Callback

      `onPointerCaptureChanged`

- - ### Field Detail

    - #### FRAGMENT_CONTAINER_ID

          public static final int FRAGMENT_CONTAINER_ID

  - ### Constructor Detail

    - #### FlutterFragmentActivity

          public FlutterFragmentActivity()

  - ### Method Detail

    - #### createDefaultIntent

          @NonNull
          public static Intent createDefaultIntent​(@NonNull
                                                   Context launchContext)

      Creates an `Intent` that launches a `FlutterFragmentActivity`, which executes a `main()` Dart entrypoint, and displays the "/" route as Flutter's initial route.

    - #### withNewEngine

          @NonNull
          public static FlutterFragmentActivity.NewEngineIntentBuilder withNewEngine()

      Creates an `FlutterFragmentActivity.NewEngineIntentBuilder`, which can be used to configure an `Intent` to launch a `FlutterFragmentActivity` that internally creates a new `FlutterEngine` using the desired Dart entrypoint, initial route, etc.

    - #### withCachedEngine

          @NonNull
          public static FlutterFragmentActivity.CachedEngineIntentBuilder withCachedEngine​(@NonNull
                                                                                           String cachedEngineId)

      Creates a `FlutterFragmentActivity.CachedEngineIntentBuilder`, which can be used to configure an `Intent` to launch a `FlutterFragmentActivity` that internally uses an existing `FlutterEngine` that is cached in `FlutterEngineCache`.

    - #### onCreate

          protected void onCreate​(@Nullable
                                  Bundle savedInstanceState)

      Overrides:
        `onCreate` in class `androidx.fragment.app.FragmentActivity`

    - #### provideSplashScreen

          @Nullable
          public SplashScreen provideSplashScreen()

      Description copied from interface: `SplashScreenProvider`
      Provides a `SplashScreen` to display while Flutter initializes and renders its first frame.
      Specified by:
        `provideSplashScreen` in interface `SplashScreenProvider`
      Returns:
        The splash screen.

    - #### createFlutterFragment

          @NonNull
          protected FlutterFragment createFlutterFragment()

      Creates the instance of the `FlutterFragment` that this `FlutterFragmentActivity` displays.

      Subclasses may override this method to return a specialization of `FlutterFragment`.

    - #### onPostResume

          public void onPostResume()

      Overrides:
        `onPostResume` in class `androidx.fragment.app.FragmentActivity`

    - #### onNewIntent

          protected void onNewIntent​(@NonNull
                                     Intent intent)

      Overrides:
        `onNewIntent` in class `androidx.fragment.app.FragmentActivity`

    - #### onBackPressed

          public void onBackPressed()

      Overrides:
        `onBackPressed` in class `androidx.activity.ComponentActivity`

    - #### onRequestPermissionsResult

          public void onRequestPermissionsResult​(int requestCode,
                                                 @NonNull
                                                 String[] permissions,
                                                 @NonNull
                                                 int[] grantResults)

      Specified by:
        `onRequestPermissionsResult` in interface `androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback`
      Overrides:
        `onRequestPermissionsResult` in class `androidx.fragment.app.FragmentActivity`

    - #### onUserLeaveHint

          public void onUserLeaveHint()

      Overrides:
        `onUserLeaveHint` in class `Activity`

    - #### onTrimMemory

          public void onTrimMemory​(int level)

      Specified by:
        `onTrimMemory` in interface `ComponentCallbacks2`
      Overrides:
        `onTrimMemory` in class `Activity`

    - #### onActivityResult

          protected void onActivityResult​(int requestCode,
                                          int resultCode,
                                          Intent data)

      Overrides:
        `onActivityResult` in class `androidx.fragment.app.FragmentActivity`

    - #### getFlutterEngine

          @Nullable
          protected FlutterEngine getFlutterEngine()

    - #### shouldDestroyEngineWithHost

          public boolean shouldDestroyEngineWithHost()

      Returns false if the `FlutterEngine` backing this `FlutterFragmentActivity` should outlive this `FlutterFragmentActivity`, or true to be destroyed when the `FlutterFragmentActivity` is destroyed.

      The default value is `true` in cases where `FlutterFragmentActivity` created its own `FlutterEngine`, and `false` in cases where a cached `FlutterEngine` was provided.

    - #### shouldAttachEngineToActivity

          protected boolean shouldAttachEngineToActivity()

      Hook for subclasses to control whether or not the `FlutterFragment` within this `Activity` automatically attaches its `FlutterEngine` to this `Activity`.

      For an explanation of why this control exists, see `FlutterFragment.shouldAttachEngineToActivity()`.

      This property is controlled with a protected method instead of an `Intent` argument because the only situation where changing this value would help, is a situation in which `FlutterFragmentActivity` is being subclassed to utilize a custom and/or cached `FlutterEngine`.

      Defaults to `true`.

    - #### shouldHandleDeeplinking

          protected boolean shouldHandleDeeplinking()

      Whether to handle the deeplinking from the `Intent` automatically if the `getInitialRoute` returns null.

      The default implementation looks `<meta-data>` called `FlutterActivityLaunchConfigs.HANDLE_DEEPLINKING_META_DATA_KEY` within the Android manifest definition for this `FlutterFragmentActivity`.

    - #### provideFlutterEngine

          @Nullable
          public FlutterEngine provideFlutterEngine​(@NonNull
                                                    Context context)

      Hook for subclasses to easily provide a custom `FlutterEngine`.
      Specified by:
        `provideFlutterEngine` in interface `FlutterEngineProvider`
      Parameters:
        `context` - The current context. e.g. An activity.
      Returns:
        The Flutter engine.

    - #### configureFlutterEngine

          public void configureFlutterEngine​(@NonNull
                                             FlutterEngine flutterEngine)

      Hook for subclasses to easily configure a `FlutterEngine`.

      This method is called after `provideFlutterEngine(Context)`.

      All plugins listed in the app's pubspec are registered in the base implementation of this method unless the FlutterEngine for this activity was externally created. To avoid the automatic plugin registration for implicitly created FlutterEngines, override this method without invoking super(). To keep automatic plugin registration and further configure the FlutterEngine, override this method, invoke super(), and then configure the FlutterEngine as desired.

      Specified by:
        `configureFlutterEngine` in interface `FlutterEngineConfigurator`
      Parameters:
        `flutterEngine` - The Flutter engine.

    - #### cleanUpFlutterEngine

          public void cleanUpFlutterEngine​(@NonNull
                                           FlutterEngine flutterEngine)

      Hook for the host to cleanup references that were established in `configureFlutterEngine(FlutterEngine)` before the host is destroyed or detached.

      This method is called in `FragmentActivity.onDestroy()`.

      Specified by:
        `cleanUpFlutterEngine` in interface `FlutterEngineConfigurator`
      Parameters:
        `flutterEngine` - The Flutter engine.

    - #### getAppBundlePath

          @NonNull
          protected String getAppBundlePath()

      A custom path to the bundle that contains this Flutter app's resources, e.g., Dart code snapshots.

      When this `FlutterFragmentActivity` is run by Flutter tooling and a data String is included in the launching `Intent`, that data String is interpreted as an app bundle path.

      When otherwise unspecified, the value is null, which defaults to the app bundle path defined in `FlutterLoader.findAppBundlePath()`.

      Subclasses may override this method to return a custom app bundle path.

    - #### getMetaData

          @Nullable
          protected Bundle getMetaData()
                                throws PackageManager.NameNotFoundException

      Retrieves the meta data specified in the AndroidManifest.xml.
      Throws:
        `PackageManager.NameNotFoundException`

    - #### getDartEntrypointFunctionName

          @NonNull
          public String getDartEntrypointFunctionName()

      The Dart entrypoint that will be executed as soon as the Dart snapshot is loaded.

      This preference can be controlled by setting a `<meta-data>` called `FlutterActivityLaunchConfigs.DART_ENTRYPOINT_META_DATA_KEY` within the Android manifest definition for this `FlutterFragmentActivity`.

      Subclasses may override this method to directly control the Dart entrypoint.

    - #### getDartEntrypointArgs

          @Nullable
          public List<String> getDartEntrypointArgs()

      The Dart entrypoint arguments will be passed as a list of string to Dart's entrypoint function.

      A value of null means do not pass any arguments to Dart's entrypoint function.

      Subclasses may override this method to directly control the Dart entrypoint arguments.

    - #### getDartEntrypointLibraryUri

          @Nullable
          public String getDartEntrypointLibraryUri()

      The Dart library URI for the entrypoint that will be executed as soon as the Dart snapshot is loaded.

      Example value: "package:foo/bar.dart"

      This preference can be controlled by setting a `<meta-data>` called `FlutterActivityLaunchConfigs.DART_ENTRYPOINT_URI_META_DATA_KEY` within the Android manifest definition for this `FlutterFragmentActivity`.

      A value of null means use the default root library.

      Subclasses may override this method to directly control the Dart entrypoint uri.

    - #### getInitialRoute

          protected String getInitialRoute()

      The initial route that a Flutter app will render upon loading and executing its Dart code.

      This preference can be controlled with 2 methods:

      1. Pass a boolean as `FlutterActivityLaunchConfigs.EXTRA_INITIAL_ROUTE` with the launching `Intent`, or
      2. Set a `<meta-data>` called `FlutterActivityLaunchConfigs.INITIAL_ROUTE_META_DATA_KEY` for this `Activity` in the Android manifest.
      If both preferences are set, the `Intent` preference takes priority.

      The reason that a `<meta-data>` preference is supported is because this `Activity` might be the very first `Activity` launched, which means the developer won't have control over the incoming `Intent`.

      Subclasses may override this method to directly control the initial route.

      If this method returns null and the `shouldHandleDeeplinking` returns true, the initial route is derived from the `Intent` through the Intent.getData() instead.

    - #### getCachedEngineId

          @Nullable
          protected String getCachedEngineId()

      Returns the ID of a statically cached `FlutterEngine` to use within this `FlutterFragmentActivity`, or `null` if this `FlutterFragmentActivity` does not want to use a cached `FlutterEngine`.

    - #### getBackgroundMode

          @NonNull
          protected FlutterActivityLaunchConfigs.BackgroundMode getBackgroundMode()

      The desired window background mode of this `Activity`, which defaults to `FlutterActivityLaunchConfigs.BackgroundMode.opaque`.

    - #### getRenderMode

          @NonNull
          protected RenderMode getRenderMode()

      Returns the desired `RenderMode` for the `FlutterView` displayed in this `FlutterFragmentActivity`.

      That is, `RenderMode.surface` if `getBackgroundMode()` is `FlutterActivityLaunchConfigs.BackgroundMode.opaque` or `RenderMode.texture` otherwise.

    - #### provideRootLayout

          @NonNull
          protected FrameLayout provideRootLayout​(Context context)

      Returns a `FrameLayout` that is used as the content view of this activity.