0

I'm trying to add an array of strings to a deep link.

I'm creating my deep link like this

fun byCategoryDeepLink(
    category: String,
    subCategories: Array<String>
) = DeepLink("my-app://com.app/venues/${category}/$subCategories")

Which is declared as

        <deepLink
            android:autoVerify="true"
            app:action="android.intent.action.VIEW"
            app:uri="my-app://com.app/venues/{category}/{subCategories}" />

        <argument
            android:name="subCategories"
            app:argType="string[]"
            app:nullable="true"
            android:defaultValue="@null" />

        <argument
            android:name="category"
            app:argType="string" />

But when trying to navigate I get "Arrays don't support default values." which comes from the NavType.kt class when parseValue is called.

        public val StringArrayType: NavType<Array<String>?> = object : NavType<Array<String>?>(
            true
        ) {
            override val name: String
                get() = "string[]"

            override fun put(bundle: Bundle, key: String, value: Array<String>?) {
                bundle.putStringArray(key, value)
            }

            @Suppress("UNCHECKED_CAST", "DEPRECATION")
            override fun get(bundle: Bundle, key: String): Array<String>? {
                return bundle[key] as Array<String>?
            }

            override fun parseValue(value: String): Array<String>? {
                throw UnsupportedOperationException("Arrays don't support default values.")
            }
        }

I'm assuming this means I'm passing my data in the wrong format, but I can't find anything about the correct format.

  • 2
    What version of Navigation are you using? String arrays as repeated query parameters are supported in [Navigation 2.6.0-alpha01](https://developer.android.com/jetpack/androidx/releases/navigation#2.6.0-alpha01) or higher. – ianhanniballake Oct 31 '22 at 18:40

0 Answers0