# NavDeepLink.Builder

Artifact: [androidx.navigation:navigation-common](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavDeepLink.kt+class:androidx.navigation.NavDeepLink.Builder) Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

*** ** * ** ***

Kotlin \|[Java](https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder "View this page in Java") Common/AllAndroid/JVMJavaScript
- Cmn

  ```
  class NavDeepLink.Builder
  ```

*** ** * ** ***

A builder for constructing `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` instances.

## Summary

| ### Public functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#build()()` Build the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` specified by this builder. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setAction(kotlin.String)(action: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Set the action for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setMimeType(kotlin.String)(mimeType: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Set the mimeType for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String)(uriPattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`. | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)(basePath: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>>)` Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)( route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>, basePath: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> )` Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`. | Cmn |

## Public functions

### build

Cmn Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

```
fun build(): NavDeepLink
```

Build the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` specified by this builder.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` | the newly constructed NavDeepLink. |

### setAction

Cmn Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

```
fun setAction(action: String): NavDeepLink.Builder
```

Set the action for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`.

| Parameters |
|---|---|
| `action: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | the intent action for the NavDeepLink |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | This builder. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the action is empty. |

### setMimeType

Cmn Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

```
fun setMimeType(mimeType: String): NavDeepLink.Builder
```

Set the mimeType for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`.

| Parameters |
|---|---|
| `mimeType: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | the mimeType for the NavDeepLink |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | This builder. |

### setUriPattern

Cmn Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

```
fun setUriPattern(uriPattern: String): NavDeepLink.Builder
```

Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`.

| Parameters |
|---|---|
| `uriPattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The uri pattern to add to the NavDeepLink |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | This builder. |

### setUriPattern

Cmn

```
inline fun <T : Any> setUriPattern(
    basePath: String,
    typeMap: Map<KType, NavType<*>> = emptyMap()
): NavDeepLink.Builder
```

Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`.

Arguments extracted from destination `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)` will be automatically appended to the base path provided in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)`.

Arguments are appended based on property name and in the same order as their declaration order in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)`. They are appended as query parameters if the argument has either:

1. a default value

2. a `https://developer.android.com/reference/kotlin/androidx/navigation/NavType` of `https://developer.android.com/reference/kotlin/androidx/navigation/CollectionNavType`

Otherwise, the argument will be appended as path parameters. The final uriPattern is generated by concatenating `uriPattern + path parameters + query parameters`.

For example, the `name` property in this class does not meet either conditions and will be appended as a path param.

```kotlin
@Serializable
class MyClass(val name: String)
```

Given a uriPattern of "www.example.com", the generated final uriPattern will be `www.example.com/{name}`.

The `name` property in this class has a default value and will be appended as a query.

```kotlin
@Serializable
class MyClass(val name: String = "default")
```

Given a uriPattern of "www.example.com", the final generated uriPattern will be `www.example.com?name={name}`

The append order is based on their declaration order in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)`

```kotlin
@Serializable
class MyClass(val name: String = "default", val id: Int, val code: Int)
```

Given a uriPattern of "www.example.com", the final generated uriPattern will be `www.example.com/{id}/{code}?name={name}`. In this example, `name` is appended first as a query param, then `id` and `code` respectively as path params. The final pattern is then concatenated with `uriPattern + path + query`.

| Parameters |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html>` | The destination's route from KClass |
| `basePath: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The base uri path to append arguments onto |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | map of destination arguments' kotlin type `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html` to its respective custom `https://developer.android.com/reference/kotlin/androidx/navigation/NavType`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)` does not use custom NavTypes. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | This builder. |

### setUriPattern

Cmn Added in [2.9.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.9.0)

```
fun <T : Any> setUriPattern(
    route: KClass<T>,
    basePath: String,
    typeMap: Map<KType, NavType<*>> = emptyMap()
): NavDeepLink.Builder
```

Set the uri pattern for the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink`.

Arguments extracted from destination `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)` will be automatically appended to the base path provided in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)`.

Arguments are appended based on property name and in the same order as their declaration order in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)`. They are appended as query parameters if the argument has either:

1. a default value

2. a `https://developer.android.com/reference/kotlin/androidx/navigation/NavType` of `https://developer.android.com/reference/kotlin/androidx/navigation/CollectionNavType`

Otherwise, the argument will be appended as path parameters. The final uriPattern is generated by concatenating `uriPattern + path parameters + query parameters`.

For example, the `name` property in this class does not meet either conditions and will be appended as a path param.

```kotlin
@Serializable
class MyClass(val name: String)
```

Given a uriPattern of "www.example.com", the generated final uriPattern will be `www.example.com/{name}`.

The `name` property in this class has a default value and will be appended as a query.

```kotlin
@Serializable
class MyClass(val name: String = "default")
```

Given a uriPattern of "www.example.com", the final generated uriPattern will be `www.example.com?name={name}`

The append order is based on their declaration order in `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)`

```kotlin
@Serializable
class MyClass(val name: String = "default", val id: Int, val code: Int)
```

Given a uriPattern of "www.example.com", the final generated uriPattern will be `www.example.com/{id}/{code}?name={name}`. In this example, `name` is appended first as a query param, then `id` and `code` respectively as path params. The final pattern is then concatenated with `uriPattern + path + query`.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>` | The destination's route from KClass |
| `basePath: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The base uri path to append arguments onto |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | map of destination arguments' kotlin type `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html` to its respective custom `https://developer.android.com/reference/kotlin/androidx/navigation/NavType`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)` does not use custom NavTypes. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.Builder` | This builder. |