Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

# EmbeddedPhotoPickerSession

*** ** * ** ***

` public interface EmbeddedPhotoPickerSession `   
` `

|---|
| android.widget.photopicker.EmbeddedPhotoPickerSession |

<br />

*** ** * ** ***

Class that holds the embedded photopicker view wrapped in `https://developer.android.com/reference/android/view/SurfaceControlViewHost.SurfacePackage` that can be embedded by the caller in their view hierarchy by placing it in a `https://developer.android.com/reference/android/view/SurfaceView` via its `https://developer.android.com/reference/android/view/SurfaceView#setChildSurfacePackage(android.view.SurfaceControlViewHost.SurfacePackage)` api. Callers of `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider#openSession(android.os.IBinder,%20int,%20int,%20int,%20android.widget.photopicker.EmbeddedPhotoPickerFeatureInfo,%20java.util.concurrent.Executor,%20android.widget.photopicker.EmbeddedPhotoPickerClient)` will asynchronously receive instance of this class from the service upon its successful execution via `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerClient#onSessionOpened(android.widget.photopicker.EmbeddedPhotoPickerSession)` callback.

Instance of this class can be then used by callers to notify PhotoPicker about different events for service to act upon them.

When a session is no longer being used, it should be closed by callers to help system release the resources.
**See also:**

- `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider`
- `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerClient`

## Summary

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#close()() ` Close the session, i.e. |
| ` abstract https://developer.android.com/reference/android/view/SurfaceControlViewHost.SurfacePackage` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#getSurfacePackage()() ` Returns the `https://developer.android.com/reference/android/view/SurfaceControlViewHost.SurfacePackage` that contains view representing embedded picker. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#notifyConfigurationChanged(android.content.res.Configuration)(https://developer.android.com/reference/android/content/res/Configuration configuration) ` Notifies photopicker that host side configuration has changed. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#notifyPhotoPickerExpanded(boolean)(boolean isExpanded) ` Notify that user switched photopicker between expanded/collapsed state. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#notifyResized(int,%20int)(int width, int height) ` Notify that caller's presentation area has changed and photopicker's dimensions should change accordingly. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#notifyVisibilityChanged(boolean)(boolean isVisible) ` Notify that embedded photopicker view is visible or not to the user. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession#requestRevokeUriPermission(java.util.List<android.net.Uri>)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/net/Uri> uris) ` Notify that the user deselected some items. |

## Public methods

### close

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void close ()
```

Close the session, i.e. photopicker will release resources associated with this session. Any further notifications to this Session will be ignored by the service.

<br />

### getSurfacePackage

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract SurfaceControlViewHost.SurfacePackage getSurfacePackage ()
```

Returns the `https://developer.android.com/reference/android/view/SurfaceControlViewHost.SurfacePackage` that contains view representing embedded picker.

Callers can attach this view in their hierarchy using `https://developer.android.com/reference/android/view/SurfaceView#setChildSurfacePackage(android.view.SurfaceControlViewHost.SurfacePackage)` api.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControlViewHost.SurfacePackage` | This value cannot be `null`. <br /> |

### notifyConfigurationChanged

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void notifyConfigurationChanged (Configuration configuration)
```

Notifies photopicker that host side configuration has changed.

<br />

| Parameters ||
|---|---|
| `configuration` | `Configuration`: new configuration of caller. This value cannot be `null`. <br /> |

### notifyPhotoPickerExpanded

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void notifyPhotoPickerExpanded (boolean isExpanded)
```

Notify that user switched photopicker between expanded/collapsed state.

Some photopicker features (like Profile selector, Album grid etc.) are only shown in full/expanded view and are hidden in collapsed view.

<br />

| Parameters ||
|---|---|
| `isExpanded` | `boolean`: true if expanded, false if collapsed. <br /> |

### notifyResized

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void notifyResized (int width, 
                int height)
```

Notify that caller's presentation area has changed and photopicker's dimensions should change accordingly.

<br />

| Parameters ||
|---|---|
| `width` | `int`: width of the view, in pixels <br /> |
| `height` | `int`: height of the view, in pixels <br /> |

### notifyVisibilityChanged

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void notifyVisibilityChanged (boolean isVisible)
```

Notify that embedded photopicker view is visible or not to the user.

This helps photopicker to close upstream work and manage the lifecycle of this Session instance.

<br />

| Parameters ||
|---|---|
| `isVisible` | `boolean`: True if view visible to the user, false if not. <br /> |

### requestRevokeUriPermission

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 15](https://developer.android.com/sdkExtensions)

```
public abstract void requestRevokeUriPermission (List<Uri> uris)
```

Notify that the user deselected some items.

<br />

| Parameters ||
|---|---|
| `uris` | `List`: The `https://developer.android.com/reference/android/net/Uri` list of the deselected items. This value cannot be `null`. <br /> |