# 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)

*** ** * ** ***


```
public final class NavDeepLink.Builder
```

<br />

*** ** * ** ***

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

## Summary

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink` | `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#build()()` Build the `https://developer.android.com/reference/androidx/navigation/NavDeepLink` specified by this builder. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setAction(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html action)` Set the action for the `https://developer.android.com/reference/androidx/navigation/NavDeepLink`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setMimeType(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html mimeType)` Set the mimeType for the `https://developer.android.com/reference/androidx/navigation/NavDeepLink`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html uriPattern)` Set the uri pattern for the `https://developer.android.com/reference/androidx/navigation/NavDeepLink`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html basePath, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavType<@https://developer.android.com/reference/androidx/annotation/NonNull ?>> typeMap )` Set the uri pattern for the `https://developer.android.com/reference/androidx/navigation/NavDeepLink`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> route, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html basePath, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavType<@https://developer.android.com/reference/androidx/annotation/NonNull ?>> typeMap )` Set the uri pattern for the `https://developer.android.com/reference/androidx/navigation/NavDeepLink`. |

## Public methods

### build

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

```
public final @NonNull NavDeepLink build()
```

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

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

### setAction

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

```
public final @NonNull NavDeepLink.Builder setAction(@NonNull String action)
```

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

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html action` | the intent action for the NavDeepLink |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/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

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

```
public final @NonNull NavDeepLink.Builder setMimeType(@NonNull String mimeType)
```

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

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html mimeType` | the mimeType for the NavDeepLink |

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

### setUriPattern

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

```
public final @NonNull NavDeepLink.Builder setUriPattern(@NonNull String uriPattern)
```

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

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html uriPattern` | The uri pattern to add to the NavDeepLink |

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

### setUriPattern

```
public final @NonNull NavDeepLink.Builder <T extends Object> setUriPattern(
    @NonNull String basePath,
    @NonNull Map<@NonNull KType, @NonNull NavType<@NonNull ?>> typeMap
)
```

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

Arguments extracted from destination `https://developer.android.com/reference/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/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/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/androidx/navigation/NavType` of `https://developer.android.com/reference/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.

```
@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.

```
@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/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)`

```
@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 extends https://developer.android.com/reference/java/lang/Object.html>` | The destination's route from KClass |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html basePath` | The base uri path to append arguments onto |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavType<@https://developer.android.com/reference/androidx/annotation/NonNull ?>> typeMap` | 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/androidx/navigation/NavType`. May be empty if `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.String,kotlin.collections.Map)` does not use custom NavTypes. |

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

### setUriPattern

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

```
public final @NonNull NavDeepLink.Builder <T extends Object> setUriPattern(
    @NonNull KClass<@NonNull T> route,
    @NonNull String basePath,
    @NonNull Map<@NonNull KType, @NonNull NavType<@NonNull ?>> typeMap
)
```

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

Arguments extracted from destination `https://developer.android.com/reference/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/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/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/androidx/navigation/NavType` of `https://developer.android.com/reference/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.

```
@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.

```
@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/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)`

```
@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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> route` | The destination's route from KClass |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html basePath` | The base uri path to append arguments onto |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavType<@https://developer.android.com/reference/androidx/annotation/NonNull ?>> typeMap` | 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/androidx/navigation/NavType`. May be empty if `https://developer.android.com/reference/androidx/navigation/NavDeepLink.Builder#setUriPattern(kotlin.reflect.KClass,kotlin.String,kotlin.collections.Map)` does not use custom NavTypes. |

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