Instant app with Dynamic Features always show Disambiguation dialog with 1 option

前端 未结 2 1225

I\'m experimenting with Dynamic Features and Instant Apps. To navigate between various features, I use Deep Links.

Each time I navigate to another Activity, I see the d

2条回答
  •  难免孤独
    2021-02-10 11:26

    There is a possible solution for using URI intents with dynamic features instead of switching to reflection. You can use a trick where you can get the needed class name during run time with packageManager.queryIntentActivities(), so you don't have to use the hardcoded Activity name.

    The following extension function is an example of how you could convert your Intent using the URI or deep link into one that will not show the chooser dialog:

    fun Intent.convertToSafeDynamicFeatureModuleIntent(context: Context) {
        //Get list of all intent handlers for this Intent. This should only be the actual activity we are looking for
        val options = context.packageManager.queryIntentActivities(this, PackageManager.MATCH_DEFAULT_ONLY)
        //Set the activity that supported the given intent
        setClassName(packageName, options[0].activityInfo.name)
    }
    

    Then you can simply do:

    intent.convertToSafeDynamicFeatureModuleIntent(context)
    startActivity(intent)
    

    A longer explanation can be found here

提交回复
热议问题