# ActivityResultContracts.OpenDocumentTree

Artifact: [androidx.activity:activity](https://developer.android.com/jetpack/androidx/releases/activity) [View Source](https://cs.android.com/search?q=file:androidx/activity/result/contract/ActivityResultContracts.kt+class:androidx.activity.result.contract.ActivityResultContracts.OpenDocumentTree) Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/activity#1.2.0)

*** ** * ** ***


```
public class ActivityResultContracts.OpenDocumentTree extends ActivityResultContract<Uri, Uri>
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.activity.result.contract.ActivityResultContract](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract)\<[Uri](https://developer.android.com/reference/android/net/Uri.html), [Uri](https://developer.android.com/reference/android/net/Uri.html)\> ||
|   | ↳ | [androidx.activity.result.contract.ActivityResultContracts.OpenDocumentTree](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree) |

*** ** * ** ***

An `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract` to prompt the user to select a directory, returning the user selection as a `https://developer.android.com/reference/android/net/Uri.html`. Apps can fully manage documents within the returned directory.

The input is an optional `https://developer.android.com/reference/android/net/Uri.html` of the initial starting location.

This can be extended to override `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree#createIntent(android.content.Context,android.net.Uri)` if you wish to pass additional extras to the Intent created by `super.createIntent()`.

| See also |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html#ACTION_OPEN_DOCUMENT_TREE` |   |
| `https://developer.android.com/reference/android/provider/DocumentsContract.html#buildDocumentUriUsingTree(android.net.Uri, java.lang.String)` |   |
| `https://developer.android.com/reference/android/provider/DocumentsContract.html#buildChildDocumentsUriUsingTree(android.net.Uri, java.lang.String)` |   |

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree#OpenDocumentTree()()` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Intent.html` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree#createIntent(android.content.Context,android.net.Uri)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/android/net/Uri.html input)` Create an intent that can be used for `https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int)`. |
| `final https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract.SynchronousResult<https://developer.android.com/reference/android/net/Uri.html>` | `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree#getSynchronousResult(android.content.Context,android.net.Uri)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/android/net/Uri.html input)` An optional method you can implement that can be used to potentially provide a result in lieu of starting an activity. |
| `final https://developer.android.com/reference/android/net/Uri.html` | `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocumentTree#parseResult(kotlin.Int,android.content.Intent)(int resultCode, https://developer.android.com/reference/android/content/Intent.html intent)` Convert result obtained from `https://developer.android.com/reference/android/app/Activity.html#onActivityResult(int, int, android.content.Intent)` to `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract`. |

## Public constructors

### OpenDocumentTree

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

```
public OpenDocumentTree()
```

## Public methods

### createIntent

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

```
@CallSuper
public @NonNull Intent createIntent(@NonNull Context context, Uri input)
```

Create an intent that can be used for `https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int)`.

### getSynchronousResult

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

```
public final ActivityResultContract.SynchronousResult<Uri> getSynchronousResult(@NonNull Context context, Uri input)
```

An optional method you can implement that can be used to potentially provide a result in lieu of starting an activity.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract.SynchronousResult<https://developer.android.com/reference/android/net/Uri.html>` | the result wrapped in a `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract.SynchronousResult` or `null` if the call should proceed to start an activity. |

### parseResult

```
public final Uri parseResult(int resultCode, Intent intent)
```

Convert result obtained from `https://developer.android.com/reference/android/app/Activity.html#onActivityResult(int, int, android.content.Intent)` to `https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract`.