# System Attachments Picker

Sometimes it's not desirable for an app to have the `READ_MEDIA_IMAGES` and `READ_MEDIA_VIDEO` permissions.
In this guide, we will explain how to set up the new `useDefaultSystemMediaPicker` parameter in `ChatUI`, why it is important, and how to remove permissions from the `AndroidManifest.xml` using `tools:node="remove"`.

### The Importance of System Media Picker

The `useDefaultSystemMediaPicker` parameter allows you to use the system's default media picker instead of the custom media picker provided by the library. This can be beneficial for several reasons:

- **Consistency**: Provides a consistent user experience by using the familiar system media picker.
- **Permissions**: Reduces the need for additional permissions, as the system media picker handles permissions internally.
- **Simplicity**: Simplifies the implementation by leveraging the built-in functionality of the system media picker.

### Setting Up System Media Picker

There are two options for enabling usage of the system media picker in XML-based UI: `XML attributes` and `StyleTransformer`.

Let's start with the `XML Attributes` option.
You can enable the system media picker by setting the `streamUiMessageComposerAttachmentsPickerSystemPickerEnabled` attribute to `true` in the `MessageComposerView` XML layout.

```xml
<io.getstream.chat.android.ui.feature.messages.composer.MessageComposerView
  android:id="@+id/messageComposerView"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:streamUiMessageComposerAttachmentsPickerSystemPickerEnabled="true"
  />
```

You can also enable the system media picker using the `StyleTransformer` as shown below.

```kotlin
// Set the property directly in the AttachmentsPickerDialogStyle
TransformStyle.attachmentsPickerStyleTransformer = StyleTransformer { defaultStyle ->
    defaultStyle.copy(
        useDefaultSystemMediaPicker = true,
    )
}

// Or set the property in the MessageComposerStyle
TransformStyle.messageComposerStyleTransformer = StyleTransformer { defaultStyle ->
    defaultStyle.copy(
        attachmentsPickerDialogStyle = defaultStyle.attachmentsPickerDialogStyle.copy(
            useDefaultSystemMediaPicker = true,
        ),
    )
}
```

Note that setting `useDefaultSystemMediaPicker` in `MessageComposerStyle` will override the value set in `AttachmentsPickerDialogStyle`.

### Customization

By default, the system attachments picker allows selection of the following attachments:

- Picking an image/video
- Picking a file
- Capturing a photo/video
- Creating a poll

To enable/disable the default options, you can override the following properties of the
`MessageComposerView`:

- `streamUiMessageComposerAttachmentsPickerMediaAttachmentsTabEnabled` to enable/disable picking an
  image/video.
- `streamUiMessageComposerAttachmentsPickerFileAttachmentsTabEnabled` to enable/disable picking a
  file.
- `streamUiMessageComposerAttachmentsPickerCameraAttachmentsTabEnabled` to enable/disable capturing
  a photo/video.
- `streamUiMessageComposerAttachmentsPickerPollAttachmentsTabEnabled` to enable/disable creating a
  poll.

Additionally, you can customize the behavior of the visual media attachments picker by using the
following properties:

- `streamUiMessageComposerAttachmentsPickerSystemPickerVisualMediaAllowMultiple` to allow selection
  of multiple images/videos (default is `false`).
- `streamUiMessageComposerAttachmentsPickerSystemPickerVisualMediaType` to define the allowed types
  of visual media that can be selected. Can be one of the following: `image`, `video`,
  `image_and_video` (default is `image_and_video`).

```xml
<io.getstream.chat.android.ui.feature.messages.composer.MessageComposerView
    android:id="@+id/messageComposerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:streamUiMessageComposerAttachmentsPickerSystemPickerEnabled="true"
    app:streamUiMessageComposerAttachmentsPickerSystemPickerVisualMediaAllowMultiple="true"
    app:streamUiMessageComposerAttachmentsPickerSystemPickerVisualMediaType="image"
    app:streamUiMessageComposerAttachmentsPickerCameraAttachmentsTabEnabled="false"
/>
```

Similar to the `useDefaultSystemMediaPicker` property, you can set these properties in the
`MessageComposerStyle` or `AttachmentsPickerDialogStyle` using the `StyleTransformer`.

```kotlin
// Set the properties directly in the AttachmentsPickerDialogStyle
TransformStyle.attachmentsPickerStyleTransformer = StyleTransformer { defaultStyle ->
    defaultStyle.copy(
        useDefaultSystemMediaPicker = true,
        systemMediaPickerVisualMediaAllowMultiple = true,
        systemMediaPickerVisualMediaType = VisualMediaType.IMAGE,
        cameraAttachmentsTabEnabled = false,
    )
}

// Or set the properties in the MessageComposerStyle
TransformStyle.messageComposerStyleTransformer = StyleTransformer { defaultStyle ->
    defaultStyle.copy(
        attachmentsPickerDialogStyle = defaultStyle.attachmentsPickerDialogStyle.copy(
            useDefaultSystemMediaPicker = true,
            systemMediaPickerVisualMediaAllowMultiple = true,
            systemMediaPickerVisualMediaType = VisualMediaType.IMAGE,
            cameraAttachmentsTabEnabled = false,
        ),
    )
}
```

### Removing Permissions from your Project

Let's remove the permissions from the `AndroidManifest.xml`.

When using the system media picker, you can remove unnecessary permissions from your `AndroidManifest.xml` to streamline your app's permission requests.
Use the `tools:node="remove"` attribute to remove permissions.

```xml
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove" />
```

By following these steps, you can remove unnecessary permissions from your `AndroidManifest.xml`.


---

This page was last updated at 2026-04-17T17:33:30.919Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/sdk/android/v6/ui/message-components/system-attachments-picker/](https://getstream.io/chat/docs/sdk/android/v6/ui/message-components/system-attachments-picker/).