ChatTheme(
useDefaultSystemMediaPicker = true
) {
// Your composable content
}
System Attachments Picker
Sometimes its 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 the ChatTheme
, 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
To enable the system media picker in ChatTheme
, set the useDefaultSystemMediaPicker
parameter to true
when initializing the theme.
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 pass a SystemAttachmentsPickerConfig
object to the
ChatTheme
which is used to configure the system media picker. The SystemAttachmentsPickerConfig
class has the following properties:
visualMediaAllowed
to enable/disable picking an image/video.filesAllowed
to enable/disable picking a file.captureImageAllowed
to enable/disable capturing a photo.captureVideoAllowed
to enable/disable capturing a video.pollAllowed
to enable/disable creating a poll.
Additionally, you can customize the behaviour of the visual media attachments picker by using the following properties:
visualMediaAllowMultiple
to allow selection of multiple images/videos (default isfalse
).visualMediaType
to define the allowed types of visual media that can be selected. Can be one of the following:VisualMediaType.IMAGE
,VisualMediaType.VIDEO
, orVisualMediaType.IMAGE_AND_VIDEO
(default isVisualMediaType.IMAGE_AND_VIDEO
).
ChatTheme(
useDefaultSystemMediaPicker = true,
systemAttachmentsPickerConfig = SystemAttachmentsPickerConfig(
visualMediaAllowMultiple = true,
visualMediaType = VisualMediaType.IMAGE,
captureImageAllowed = false,
captureVideoAllowed = false,
)
) {
// Your composable content
}
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.
<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
.