# NavDeepLinkBuilder

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

*** ** * ** ***

<br />

```
public final class NavDeepLinkBuilder
```

<br />

*** ** * ** ***

Class used to construct deep links to a particular destination in a `https://developer.android.com/reference/androidx/navigation/NavGraph`.

When this deep link is triggered:

1. The task is cleared.

2. The destination and all of its parents will be on the back stack.

3. Calling `https://developer.android.com/reference/androidx/navigation/NavController#navigateUp()` will navigate to the parent of the destination.

The parent of the destination is the `https://developer.android.com/reference/androidx/navigation/NavGraph#getStartDestination()` of the containing `https://developer.android.com/reference/androidx/navigation/NavGraph`. In the cases where the destination is the start destination of its containing navigation graph, the start destination of its grandparent is used.

You can construct an instance directly with `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` or build one using an existing `https://developer.android.com/reference/androidx/navigation/NavController` via `https://developer.android.com/reference/androidx/navigation/NavController#createDeepLink()`.

If the context passed in here is not an `https://developer.android.com/reference/android/app/Activity.html`, this method will use `https://developer.android.com/reference/android/content/pm/PackageManager.html#getLaunchIntentForPackage(java.lang.String)` as the default activity to launch, if available.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setComponentName(java.lang.Class)` |   |

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#NavDeepLinkBuilder(android.content.Context)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context)` |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#addDestination(kotlin.Int,android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/IdRes int destId, https://developer.android.com/reference/android/os/Bundle.html args)` Add a new destination id to deep link to. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#addDestination(kotlin.String,android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html route, https://developer.android.com/reference/android/os/Bundle.html args)` Add a new destination route to deep link to. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/app/PendingIntent.html` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#createPendingIntent()()` Construct a `https://developer.android.com/reference/android/app/PendingIntent.html` to the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/TaskStackBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#createTaskStackBuilder()()` Construct the full `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder` needed to deep link to the given destination. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setArguments(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle.html args)` Set optional arguments to send onto every destination created by this deep link. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setComponentName(java.lang.Class)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/android/app/Activity.html> activityClass)` Sets an explicit Activity to be started by the deep link created by this class. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setComponentName(android.content.ComponentName)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/ComponentName.html componentName)` Sets an explicit Activity to be started by the deep link created by this class. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/IdRes int destId, https://developer.android.com/reference/android/os/Bundle.html args)` Sets the destination id to deep link to. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.String,android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html destRoute, https://developer.android.com/reference/android/os/Bundle.html args)` Sets the destination route to deep link to. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setGraph(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/NavigationRes int navGraphId)` Sets the graph that contains the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setGraph(androidx.navigation.NavGraph)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavGraph navGraph)` Sets the graph that contains the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`. |

## Public constructors

### NavDeepLinkBuilder

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

```
public NavDeepLinkBuilder(@NonNull Context context)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | Context used to create deep links |

## Public methods

### addDestination

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

```
public final @NonNull NavDeepLinkBuilder addDestination(@IdRes int destId, Bundle args)
```

Add a new destination id to deep link to. This builds off any previous calls to this method or calls to `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`, building the minimal synthetic back stack of start destinations between the previous deep link destination and the newly added deep link destination.

This means that if R.navigation.nav_graph has startDestination= R.id.start_destination,

```
navDeepLinkBuilder
   .setGraph(R.navigation.nav_graph)
   .addDestination(R.id.second_destination, null)
```

is equivalent to

```
navDeepLinkBuilder
   .setGraph(R.navigation.nav_graph)
   .addDestination(R.id.start_destination, null)
   .addDestination(R.id.second_destination, null)
```

Use the second form to assign specific arguments to the start destination.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int destId` | destination ID to deep link to. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Arguments to pass to this destination and any synthetic back stack created due to this destination being added. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### addDestination

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

```
public final @NonNull NavDeepLinkBuilder addDestination(@NonNull String route, Bundle args)
```

Add a new destination route to deep link to. This builds off any previous calls to this method or calls to .setDestination, building the minimal synthetic back stack of start destinations between the previous deep link destination and the newly added deep link destination.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html route` | destination route to deep link to. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Arguments to pass to this destination and any synthetic back stack created due to this destination being added. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### createPendingIntent

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

```
public final @NonNull PendingIntent createPendingIntent()
```

Construct a `https://developer.android.com/reference/android/app/PendingIntent.html` to the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`.

This constructs the entire `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#createTaskStackBuilder()` needed.

You must have `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setGraph(kotlin.Int)` and `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)` before calling this method.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/app/PendingIntent.html` | a PendingIntent constructed with `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder#getPendingIntent(int,int)` to deep link to the given destination |

### createTaskStackBuilder

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

```
public final @NonNull TaskStackBuilder createTaskStackBuilder()
```

Construct the full `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder` needed to deep link to the given destination.

You must have `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setGraph(kotlin.Int)` and `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)` before calling this method.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/TaskStackBuilder` | a `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder` which can be used to `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder#startActivities()` or `https://developer.android.com/reference/androidx/core/app/TaskStackBuilder#getPendingIntent(int,int)` to deep link to the given destination. |

### setArguments

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

```
public final @NonNull NavDeepLinkBuilder setArguments(Bundle args)
```

Set optional arguments to send onto every destination created by this deep link.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/os/Bundle.html args` | arguments to pass to each destination |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setComponentName

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

```
public final @NonNull NavDeepLinkBuilder setComponentName(@NonNull Class<Activity> activityClass)
```

Sets an explicit Activity to be started by the deep link created by this class.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/android/app/Activity.html> activityClass` | The Activity to start. This Activity should have a `https://developer.android.com/reference/androidx/navigation/NavController` which uses the same `https://developer.android.com/reference/androidx/navigation/NavGraph` used to construct this deep link. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setComponentName

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

```
public final @NonNull NavDeepLinkBuilder setComponentName(@NonNull ComponentName componentName)
```

Sets an explicit Activity to be started by the deep link created by this class.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/ComponentName.html componentName` | The Activity to start. This Activity should have a `https://developer.android.com/reference/androidx/navigation/NavController` which uses the same `https://developer.android.com/reference/androidx/navigation/NavGraph` used to construct this deep link. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setDestination

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

```
public final @NonNull NavDeepLinkBuilder setDestination(@IdRes int destId, Bundle args)
```

Sets the destination id to deep link to. Any destinations previous added via `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#addDestination(kotlin.Int,android.os.Bundle)` are cleared, effectively resetting this object back to only this single destination.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int destId` | destination ID to deep link to. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Arguments to pass to this destination and any synthetic back stack created due to this destination being added. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setDestination

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

```
public final @NonNull NavDeepLinkBuilder setDestination(@NonNull String destRoute, Bundle args)
```

Sets the destination route to deep link to. Any destinations previous added via .addDestination are cleared, effectively resetting this object back to only this single destination.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html destRoute` | destination route to deep link to. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Arguments to pass to this destination and any synthetic back stack created due to this destination being added. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setGraph

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

```
public final @NonNull NavDeepLinkBuilder setGraph(@NavigationRes int navGraphId)
```

Sets the graph that contains the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NavigationRes int navGraphId` | ID of the `https://developer.android.com/reference/androidx/navigation/NavGraph` containing the deep link destination |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |

### setGraph

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

```
public final @NonNull NavDeepLinkBuilder setGraph(@NonNull NavGraph navGraph)
```

Sets the graph that contains the `https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder#setDestination(kotlin.Int,android.os.Bundle)`.

If you do not have access to a `https://developer.android.com/reference/androidx/navigation/NavController`, you can create a `https://developer.android.com/reference/androidx/navigation/NavigatorProvider` and use that to programmatically construct a navigation graph or use `https://developer.android.com/reference/androidx/navigation/NavInflater`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavGraph navGraph` | The `https://developer.android.com/reference/androidx/navigation/NavGraph` containing the deep link destination |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDeepLinkBuilder` | this object for chaining |